我试图通过pyodbc.connect调用我的uid和密码时遇到问题
这是我的odbc.ini:
[my_dsn]
Driver= SQL Server
Server=my_server
User=uid_reader
Password=password_reader
MultiSubnetFailover=Yes
Database=master
当我硬编码时,它完美地工作,我可以连接
test_uid = 'uid_reader'
test_password = 'password_reader'
conn = pyodbc.connect(r'DSN=my_dsn;UID={a};PWD={b}'.format(a=test_uid,b=test_password))
当我从我的odbc.ini调用我的dsn变量时,它不起作用
conn = pyodbc.connect(r'DSN=my_dsn;UID=User;PWD=Password')
错误:('28000',“[28000] [unixODBC] [Microsoft] [SQL Server的ODBC驱动程序11] [SQL Server]用户'User'登录失败 . (18456)(SQLDriverConnect)”)
我想在我的odbc.ini中隐藏密码,所以当我调用pyodbc.connect时它不会出现
1 回答
conn = pyodbc.connect(r'DSN=my_dsn;UID=User;PWD=Password')
行似乎使用my_dsn
,User
和Password
的文字字符串值 . 您可以尝试使用关键字like the documentation here,或者执行与硬编码解决方案类似的字符串格式设置,但将其替换为加载的配置数据 .从the documentation起,您似乎应该可以直接从ini加载DSN信息,但我自己也没有取得多大成功 . 需要注意的是,文档中只说您可以使用登录凭证,所以可能取决于驱动程序?
无论哪种方式,下面是使用
configparser
的版本应该工作 . 对某些人来说,它可能被视为黑客攻击 .