gpt4 book ai didi

python - pypyodbc - 重用数据库连接

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:08 25 4
gpt4 key购买 nike

我有两个问题:

问题 1:

假设我有两个 .py File-1 和 File-2

File-1 包含以下语句:

try:
cononnection = pypyodbc.connect('DRIVER={SQL Server};'
'SERVER=........'
'DATABASE=......'
'UID=......;PWD=......')
except:
print("I am unable to connect to the SQL SERVER Database")

在 File-2 中,如果我按以下方式使用 File-1 中定义的连接:

import AnotherPythonFile as File1

def query():
conxn1 = File1.cononnection
conxn2 = File1.cononnection
...
...

conxn1 和 conxn2 会使用在 File-1 中打开的相同连接,还是会打开另外两个新连接?

问题 2:

如果在执行以下语句时发生'pypyodbc.DatabaseError',那么连接会自动关闭(由于错误)吗?

    cursr = connection.cursor()
cursr.execute(queryStr)

最佳答案

您必须将导入的模块包装在定义的函数中,并让函数返回连接对象:

# FILE 1
import pypyodbc

def dbconn():
try:
cononnection = pypyodbc.connect('DRIVER={SQL Server};'
'SERVER=........'
'DATABASE=......'
'UID=......;PWD=......')
return connection
except:
print("I am unable to connect to the SQL SERVER Database")

然后

import AnotherPythonFile as File1   

def query():
# EACH WILL USE DIFFERENT INSTANCES OF SAME CONNECTION OBJECT
conxn1 = File1.dbconn()
conxn2 = File1.dbconn()

至于第二个问题,没有,当SQL查询执行失败时,游标和数据库连接都不会自动关闭。事实上,您可以测试这个断言。故意地,强制一个错误:

cursr.execute("SLEECT * FROM Table;")

然后,看到在引发回溯错误后,您仍然可以在 Python 的控制台中调用 cursr.close()connection.close()

关于python - pypyodbc - 重用数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34301809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com