我正在为许多客户编写服务器程序,我使用了线程。 每个客户端都可以执行需要从sqlite数据库写入或读取的操作。 我是否需要为每个操作打开和关闭连接,或者为所有客户端共享一个连接打开数据库一次? 我的代码示例:
if command == "s":
conn = open_database() #connect to the database
cursor = conn.cursor()
cursor.execute('''SELECT s FROM users WHERE username=?''', (username,))
s= cursor.fetchone()[0]
conn.close()
if not s:
s= "Empty!"
clientsock.send(str(s))
我还对数据库使用了insert命令。
答案 0 :(得分:0)
一个连接只有一个事务,因此当多个线程尝试共享同一个连接而不锁定所有事务时,您的程序可能会爆炸。
每个线程使用一个连接。
(如果你需要高并发性,SQLite might not be the best choice。)