我已经编写了使用pymysql连接数据库的功能。这是我的代码:
def SQLreadrep(sql):
connection=pymysql.connect(host=############,
user=#######,
password=########,
db=#########)
with connection.cursor() as cursor:
cursor.execute(sql)
rows=cursor.fetchall()
connection.commit()
connection.close()
return rows
我将SQL传递给此函数并返回行。但是,我正在快速查询数据库。 (类似于"SELECT sku WHERE object='2J4423K'
)。
答案 0 :(得分:1)
让我先回答您的最后一个问题。您的函数正在获取连接,但是在返回之前将其关闭。因此,我认为没有理由为什么除非您使用多线程或多处理功能,否则您一次将使用多个连接,并且不应该使服务器崩溃。
避免创建和关闭这么多连接的开销的方法是“缓存”连接。一种方法是用一个类替换您的函数:
import pymysql
class DB(object):
def __init__(self, datasource, db_user, db_password):
self.conn = pymysql.connect(db=datasource, user=db_user, password=db_password)
def __del__(self):
self.conn.close()
def query(self, sql):
with self.conn.cursor() as cursor:
cursor.execute(sql)
self.conn.commit()
return cursor.fetchall()
然后实例化 DB 类的实例并调用其 query 方法。收集 DB 实例后,连接将自动关闭。