在多线程中使用sqlite3

时间:2018-06-06 18:33:30

标签: python python-2.7 sqlite python-multithreading

我正在为许多客户编写服务器程序,我使用了线程。 每个客户端都可以执行需要从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命令。

1 个答案:

答案 0 :(得分:0)

一个连接只有一个事务,因此当多个线程尝试共享同一个连接而不锁定所有事务时,您的程序可能会爆炸。

每个线程使用一个连接。

(如果你需要高并发性,SQLite might not be the best choice。)