Python,在多个功能中共享mysql连接-通过连接还是游标?

Pav*_*kov 6 python mysql pymysql

我在主要功能中打开mysql连接,并在主要功能调用的多个功能中使用该连接。

从主函数传递光标而不是通过连接有什么问题吗?

即:

从主函数传递光标

def main():
    conn = pymysql.connect(...)
    with conn as cursor:
        func1(cursor)
        func2(cursor)
    conn.close()

def func1(cursor):
    cursor.execute('select ...')

def func2(cursor):
    cursor.execute('insert ...')
Run Code Online (Sandbox Code Playgroud)

从主要功能传入连接

def main():
    conn = pymysql.connect(...)
    func1(conn)
    func2(conn)
    conn.close()

def func1(conn):
    with conn as cursor:
        cursor.execute('select ...')

def func2(conn):
    with conn as cursor:
        cursor.execute('insert ...')
Run Code Online (Sandbox Code Playgroud)

maa*_*nus 5

答案来自Demeter法则:通过光标。

这也会导致代码略短。在这种情况下,这是微不足道的,但有时可能很多(例如,传递数据库名称与传递游标)。