我们可以使用Python内置的SQLite3库,并将连接和游标对象存储在全局变量中,以便不同的线程可以访问相同的数据库连接和游标。使用互斥锁来保证一个线程在访问数据库时不会被其他线程中断。代码示例如下:
import sqlite3
import threading
# 全局变量
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
mutex = threading.Lock()
def safe_database_query(query):
mutex.acquire()
cursor.execute(query)
result = cursor.fetchall()
conn.commit()
mutex.release()
return result
在使用时,只需要调用safe_database_query
函数即可:
result = safe_database_query("SELECT * FROM table_name;")
这样,不同的线程可以同时访问数据库,但是当一个线程正在执行写操作时,其他线程必须等待直到该线程完成写操作后才能访问数据库。