pypyodbc - 重用数据库连接

时间:2015-12-16 00:08:42

标签: python pyodbc pypyodbc

我有两个问题:

问题-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
        ...
        ...

1 个答案:

答案 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()