【发布时间】:2019-08-10 04:49:27
【问题描述】:
我想创建一个可以按需创建游标的数据库类。 必须可以并行使用游标(两个或多个游标可以共存),并且由于每个连接只能有一个游标,数据库类必须处理多个连接。
出于性能原因,我们希望尽可能地重用连接,并避免每次创建游标时都创建新连接: 每当发出请求时,该类都会尝试在打开的连接中找到第一个不忙的连接并使用它。
只要光标没有被消耗,连接就一直处于忙碌状态。
这是此类的一个示例:
class Database:
...
def get_cursos(self,query):
selected_connection = None
# Find usable connection
for con in self.connections:
if con.is_busy() == False: # <--- This is not PEP 249
selected_connection = con
break
# If all connections are busy, create a new one
if (selected_connection is None):
selected_connection = self._new_connection()
self.connections.append(selected_connection)
# Return cursor on query
cur = selected_connection.cursor()
cur.execute(query)
return cur
但是查看PEP 249 标准,我找不到任何方法来检查连接是否实际被使用。
MySQL 连接器等一些实现提供了检查连接是否仍有未读内容的方法(请参阅 here),但据我所知,这些不是 PEP 249 的一部分。
对于任何符合 PEP 249 的 python 数据库 API,我有什么方法可以实现之前描述的功能?
【问题讨论】:
标签: python mysql sql pymysql mysql-connector-python