我无法使用从配置文件读取的值进行连接。
这是在Windows上,使用Python 3.6连接到同一台计算机上的SQL Server 2008r2。
这有效:
conn = p.connect(driver = '{SQL Server Native Client 11.0}', server = 'SERVERNAME',port = '1433',database = 'DATABASE',uid = 'USERNAME',pwd = 'PASSWORD')
我想使用configParser使用配置文件中的连接字符串,并且可以使用pyodbc成功地这样做。但是我不能使用turbodbc这样做。我可以使用turbodbc进行连接的唯一方法是通过DSN或此处显示的长格式(allcap只是占位符,而不是变量)。
总是 返回的错误是:
“ ODBC错误状态:IM010本机错误代码:0消息:[Microsoft] [ODBC驱动程序管理器]数据源名称太长”
这是我第一次使用此程序包,除了这个问题之外,它很棒。
可能是一个菜鸟问题,但令人困惑的是,为什么连接只能通过使用代码或DSN中的变量来起作用。使编写代码笨拙且不太动态,无法在多种环境(开发,测试,生产)中使用。连接因环境而异。
答案 0 :(得分:0)
您可以创建一个简单的函数来基于配置文件的内容构建连接字符串。例如,如果“ example.ini”包含
[DEFAULT]
driver=ODBC Driver 17 for SQL Server
database=myDb
[development]
server=localhost
[test]
server=192.168.0.179,49242
那么您就可以使用这样的代码
import configparser
def get_connection_string(environment):
config = configparser.ConfigParser()
config.read('example.ini')
return ';'.join([x + '=' + config[environment][x] for x in config[environment]])
print(get_connection_string('development'))
# server=localhost;driver=ODBC Driver 17 for SQL Server;database=myDb
print(get_connection_string('test'))
# server=192.168.0.179,49242;driver=ODBC Driver 17 for SQL Server;database=myDb
答案 1 :(得分:0)
我遇到了同样的问题...发现我们应该将连接字符串传递给connect函数的connections_string参数。
connection = turbodbc.connect(connection_string=connection_string)