使用 pyodbc 库在 sql 连接字符串中混合字符串和输入变量 - Python
Mixing strings and input variable in sql connection string using pyodbc library - Python
我环顾四周,找不到这个问题。
所以我有一个 ext config.txt 文件,用于获取存储在 python 程序变量中的值。我在 python 中有一个变量,它以字典形式存储 key:values 。 (想法是它采用配置设置并从程序执行 sql 服务器查询)
我的代码如下所示(还显示了打印语句的输出):
driver = config['DRIVER']
server = config['SERVER']
database = config['DATABASE']
trusted = config['Trusted_Connection']
print(driver) # = {ODBC Driver 17 for SQL Server};
print(server) # = server1;
print(database) # = db1;
print(trusted) # = yes
#1. working code
sql_conn = odbc.connect('DRIVER={ODBC Driver 17 for SQL Server}; SERVER=server1; DATABASE=db1; Trusted_Connection=yes')
#2. non working code
sql_conn = odbc.connect('\''DRIVER='+ str(driver) + ' SERVER=' + str(server) + ' DATABASE=' + str(database) + ' Trusted_Connection='+ str(trusted)+'\'')
当我尝试 运行 第一行时,一切都按预期进行。但是,当我尝试使用第二行时,我得到:
pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
这跟dict转字符串有关系吗?或者可能与 pyodbc?
所以我设法找到了解决方法,看起来它是解析字符串的错误:
不正确:
odbc.connect('\''DRIVER='+ str(driver) + ' SERVER=' + str(server) + ' DATABASE=' + str(database) + ' Trusted_Connection='+ str(trusted)+'\'')
正确:
odbc.connect('DRIVER='+driver+';SERVER='+server+';DATABASE='+database+';Trusted_Connection='+trusted)
我环顾四周,找不到这个问题。
所以我有一个 ext config.txt 文件,用于获取存储在 python 程序变量中的值。我在 python 中有一个变量,它以字典形式存储 key:values 。 (想法是它采用配置设置并从程序执行 sql 服务器查询)
我的代码如下所示(还显示了打印语句的输出):
driver = config['DRIVER']
server = config['SERVER']
database = config['DATABASE']
trusted = config['Trusted_Connection']
print(driver) # = {ODBC Driver 17 for SQL Server};
print(server) # = server1;
print(database) # = db1;
print(trusted) # = yes
#1. working code
sql_conn = odbc.connect('DRIVER={ODBC Driver 17 for SQL Server}; SERVER=server1; DATABASE=db1; Trusted_Connection=yes')
#2. non working code
sql_conn = odbc.connect('\''DRIVER='+ str(driver) + ' SERVER=' + str(server) + ' DATABASE=' + str(database) + ' Trusted_Connection='+ str(trusted)+'\'')
当我尝试 运行 第一行时,一切都按预期进行。但是,当我尝试使用第二行时,我得到:
pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
这跟dict转字符串有关系吗?或者可能与 pyodbc?
所以我设法找到了解决方法,看起来它是解析字符串的错误:
不正确:
odbc.connect('\''DRIVER='+ str(driver) + ' SERVER=' + str(server) + ' DATABASE=' + str(database) + ' Trusted_Connection='+ str(trusted)+'\'')
正确:
odbc.connect('DRIVER='+driver+';SERVER='+server+';DATABASE='+database+';Trusted_Connection='+trusted)