使用 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)