【发布时间】:2021-03-18 01:06:02
【问题描述】:
我有这个问题:我正在编写一些 Python 脚本,而到目前为止,我在整个脚本中使用单个 MySQLConnector 连接完全没有问题(仅在脚本末尾关闭它),最近我遇到了一些问题。
如果我在脚本开头创建一个连接,类似于(忽略安全问题,我知道):
db_conn = mysql.connector.connect(user='root', password='myPassword', host='127.0.0.1', database='my_db', autocommit=True)
然后总是像这样使用它:
db_conn.cursor(buffered=True).execute(...)
或者 fetch 等方法,我会得到如下错误:
Failed executing the SQL query: MySQL Connection not available.
或
Failed executing the SQL query: No result set to fetch from.
或
OperationalError: (2013, 'Lost connection to MySQL server during query')
代码是正确的,我只是不明白为什么会这样。也许是因为我在异步中多次同时运行同一个函数(尝试了 2 次),所以可能是对游标的并发访问导致了这个?
我发现有人通过每次使用不同的数据库连接来修复它 (here)。
我尝试为对数据库的每个查询创建一个新连接,现在完全没有错误。它工作正常,但似乎有点过头了。想象一下调用异步函数 10 次或 100 次......将会创建很多数据库连接。会不会造成问题?它会耗尽内存吗?而且,我猜它会慢下来。
有没有办法通过为所有查询保持相同的连接来解决这个问题?为什么会这样?
【问题讨论】:
标签: python mysql mysql-python mysql-connector-python database-cursor