gpt4 book ai didi

python - 每次关闭数据库都是正确的吗?

转载 作者:行者123 更新时间:2023-12-02 18:57:42 25 4
gpt4 key购买 nike

我需要使用电报机器人处理数据库,我写了这个来管理数据库文件:

class DBfunction:
def __init__(self, dbname = 'example.db'):
self.debname = dbname
self.conn = sqlite3.connect(dbname)
self.cur = self.conn.cursor()

def search_db(self, telegram_id):
telegram_id = (telegram_id,)
sql = 'SELECT * FROM user WHERE id = ?;'
self.cur.execute(sql,telegram_id)
row = self.cur.fetchone()
self.conn.close()

return row

def newuser_db(self, tele_id, name, nick):
par = (tele_id, name, nick, 0)
#print(par)

sql = 'INSERT INTO user VALUES(?,?,?,?);'

self.cur.execute(sql, par)
self.conn.commit()
self.conn.close()

是否在类的每个 def 中正确使用 close() 还是有更好的方法?

最佳答案

这实际上取决于您要实现的目标。

您正在做的是在查询运行后关闭连接。这本身并没有错。

但是,在不断进行大量查询的应用程序中,您可能不想为尝试不断打开和关闭连接而付出开销代价。

因此,您可以创建一个连接池(称为连接池),您可以在其中存储可以被其他查询重用的连接。这是一种很常见的做法,您可以在网上阅读相关内容。

但同样,这实际上取决于您要实现的目标。如果您的应用程序没有进行太多查询,并且您花在打开和关闭连接上的几毫秒(如果有的话)对您来说并不重要,那么您可能不必担心打开和关闭连接的开销。

此外,打开和关闭连接的更安全方法是使用 with 子句。您可以阅读它的作用。语法类似于:

with cur.open() as cur:
# do your queries

finally:
# close connection

如果您在执行查询时出现错误,这可确保您的连接不会意外保持打开状态。

关于python - 每次关闭数据库都是正确的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65967869/

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