gpt4 book ai didi

python - 我应该为每个 Sqlite3 事务调用 connect() 和 close() 吗?

转载 作者:行者123 更新时间:2023-11-28 21:17:19 25 4
gpt4 key购买 nike

我想编写一个 Python 模块来为我的应用程序抽象出数据库事务。我的问题是我是否需要为每笔交易调用 connect()close()?在代码中:

import sqlite3

# Can I put connect() here?
conn = sqlite3.connect('db.py')

def insert(args):
# Or should I put it here?
conn = sqlite3.connect('db.py')
# Perform the transaction.
c = conn.cursor()
c.execute(''' insert args ''')
conn.commit()
# Do I close the connection here?
conn.close()

# Or can I close the connection whenever the application restarts (ideally, very rarely)
conn.close()

我在数据库方面经验不多,所以如果您能解释为什么一种方法优于另一种方法,我将不胜感激。

最佳答案

您可以重复使用同一个连接。您还可以将连接(和游标)用作上下文管理器,这样您就不需要显式调用 close

def insert(conn, args):
with conn.cursor() as c:
c.execute(...)
conn.commit()

with connect('db.py') as conn:
insert(conn, ...)
insert(conn, ...)
insert(conn, ...)

没有理由关闭与数据库的连接,而且每次重新打开连接的代价都很高。 (例如,您可能需要建立 TCP session 以连接到远程数据库。)

关于python - 我应该为每个 Sqlite3 事务调用 connect() 和 close() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27829010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com