本文共 1026 字,大约阅读时间需要 3 分钟。
我正在尝试使用Python 3.3(Windows 7-64位)上的SQLAlchemy(使用pyodbc)连接到SQL Server 2012数据库.我能够使用直接pyodbc进行连接,但是在使用SQLAlchemy进行连接时却没有成功.我有数据库访问的dsn文件设置.
我使用这样的直接pyodbc成功连接:
con = pyodbc.connect('FILEDSN=c:\\users\\me\\mydbserver.dsn')
对于sqlalchemy,我尝试过:
import sqlalchemy as sa
engine = sa.create_engine('mssql+pyodbc://c/users/me/mydbserver.dsn/mydbname')
create_engine方法实际上并未设置连接并且成功,但是
如果我尝试使sqlalchemy实际设置连接(如engine.table_names()),它需要一段时间,但然后返回此错误:
DBAPIError :(错误)(‘08001′,'[08001] [Microsoft] [ODBC SQL Server驱动程序] [DBNETLIB] SQL Server不存在或访问被拒绝.(17)(SQLDriverConnect)’)无无
我不确定哪里出错是如何看到sqlalchemy实际传递给pyodbc的连接字符串.我已成功使用与SQLite和MySQL相同的sqlalchemy类.
提前致谢!
解决方法:
SQLAlchemy将基于文件的DSN字符串解释为服务器名称= c,数据库名称= users.
我更喜欢在不使用DSN的情况下进行连接,这是在代码迁移期间处理的一项配置任务.
此语法使用Windows身份验证:
engine = sa.create_engine('mssql+pyodbc://server/database')
或者使用SQL身份验证:
engine = sa.create_engine('mssql+pyodbc://user:password@server/database')
SQLAlchemy对不同的连接字符串选项here进行了详尽的说明.
标签:pyodbc,python,sql-server,sqlalchemy
来源: https://codeday.me/bug/20191004/1851422.html
转载地址:http://nqqhp.baihongyu.com/