我有两个问题:
问题-1:
假设我有两个.py File-1和File-2
File-1包含以下语句:
#socialLinks
{
position: fixed;
margin-top: -4%;
float: right;
top: 7%;
left: 88vw;
}
在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")
conxn1和conxn2会使用在File-1中打开的相同连接,还是会再打开两个新连接?
问题-2:
如果' pypyodbc.DatabaseError'在执行以下语句时发生,然后连接会自动关闭(由于错误)?
import AnotherPythonFile as File1
def query():
conxn1 = File1.cononnection
conxn2 = File1.cononnection
...
...
答案 0 :(得分:-1)
您必须将导入的模块包装在已定义的函数中,并让函数返回连接对象:
# 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()
。