python - 递归函数中数据库连接的最佳实践?

标签 python mysql database recursion

我有一个递归 python 函数,它处理数据并需要从函数内部将数据写入 mysql 数据库。

我通常像这样连接到 mysql 数据库

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 个连接?

最佳答案

为什么不在 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)

关于python - 递归函数中数据库连接的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34829923/

相关文章:

python - td 数据的网络抓取

python - Python 中的数据绑定(bind)/数据转换

python - 包含应用于数组的真值检查的函数返回错误

javascript - 如何对已经从数据库中拉出的数据进行排序?

mysql - 使用某些条件过滤时 SQL 给出错误结果

sql - 开源数据库中行数的上限?

python - 有没有一种可移植的方法来提供在 PyPI 上分发的包的本地化?

php - yii 中的 Mysql View

javascript - Express JS + Multer 文件上传前查询数据库

ios - 使用 Parse 构建数据库