我有一个递归的python函数,它处理数据并需要从函数内部将数据写入mysql数据库。
我通常连接到像这样的mysql DB
def MyFunc(x, y):
conn = mysql.connector.connect(
user = "myuser",
password = "SuperSecretPassword",
host = "127.0.0.1",
database = "MyDatabase")
# Process some data here, then write it to the DB
cursor = conn.cursor()
cursor.execute("INSERT INTO table a, b, c VALUES(1,2,3)")
conn.commit()
MyFunc(x, y)
虽然这有效,但如果我在我的函数中这样做,我将创建数百个(如果不是数千个)与我的mysql数据库的连接,具体取决于递归在我处理的数据中的深度。这似乎是一个非常糟糕的主意。
我尝试在函数外部的代码的主要部分创建连接和光标,然后在函数内引用它们就像一个全局变量:
global cursor.execute("INSERT INTO table a, b, c VALUES(1,2,3)")
global conn.commit()
但这没效果。
是否可以在这样的递归函数中写入python中的数据库,只打开1个与DB的连接?
答案 0 :(得分:2)
为什么不在Python模块中保留单个连接,例如:
# script.py
conn = mysql.connector.connect(
user = "myuser",
password = "SuperSecretPassword",
host = "127.0.0.1",
database = "MyDatabase")
def MyFunc(x, y):
# Process some data here, then write it to the DB
cursor = conn.cursor()
cursor.execute("INSERT INTO table a, b, c VALUES(1,2,3)")
conn.commit()
MyFunc(x, y)