|
- import sqlite3
- from concurrent.futures import ThreadPoolExecutor
-
- import grpc
- import schema_pb2 as stub
- import schema_pb2_grpc as service
-
- SERVER_ADDR = '0.0.0.0:1234'
-
-
- class Database(service.DatabaseServicer):
- def PutUser(self, request, context):
- try:
- con = sqlite3.connect('db.sqlite')
- cur = con.cursor()
- print(request.user_id, request.user_name)
- cur.execute("INSERT OR REPLACE INTO User (id, name) VALUES (?, ?)",
- (request.user_id, request.user_name))
- con.commit()
- con.close()
- return stub.Response(status=1)
- except Exception as inst:
- con.close()
- return stub.Response(status=0)
-
- def GetUsers(self, request, context):
- try:
- con = sqlite3.connect('db.sqlite')
- cur = con.cursor()
- res = cur.execute('SELECT id, name FROM User')
- users = []
-
- for user in res.fetchall():
- users.append({'user_id': user[0], 'user_name': user[1]})
-
- con.commit()
- con.close()
- return stub.UsersResponse(users=users)
- except Exception:
- con.close()
- return stub.UsersResponse(users=[])
-
- def DeleteUser(self, request, context):
- try:
- con = sqlite3.connect('db.sqlite')
- cur = con.cursor()
- cur.execute('DELETE FROM User WHERE id=?', (request.user_id, ))
- con.commit()
- con.close()
- return stub.Response(status=1)
- except Exception:
- con.close()
- return stub.Response(status=0)
-
-
- def create_table():
- try:
- con = sqlite3.connect('db.sqlite')
- cur = con.cursor()
- cur.execute('CREATE TABLE IF NOT EXISTS User(id INTEGER PRIMARY KEY, name TEXT)')
- con.commit()
- con.close()
- print('Created a table')
- except Exception:
- print('DOESNT WORK')
-
-
- if __name__ == '__main__':
- create_table()
- try:
- server = grpc.server(ThreadPoolExecutor(max_workers=30))
- service.add_DatabaseServicer_to_server(Database(), server)
- server.add_insecure_port(SERVER_ADDR)
- server.start()
- print(f'listening on {SERVER_ADDR}')
- server.wait_for_termination()
- except KeyboardInterrupt:
- print('Interrupted by user. Shutting down...')
|