[英]SQLAlchemy can't connect to an mssql database
这是我的简单测试脚本。 只是尝试做一个基本的选择语句。 找到教程的基本部分。
from sqlalchemy import *
db = create_engine('mssql+pyodbc://user:pass@ip_address/database_name')
db.echo = True
metadata = MetaData(db)
users = Table('member', metadata, autoload=True)
def run(stmt):
rs = stmt.execute()
for row in rs:
print row
s = users.select(users.c.fname == 'Bill')
run(s)
经过一个小时的搜索并尝试了一些解决方案之后,我就没有比开始时更接近解决它了。 希望我在某个地方犯了一个简单的错误,但我找不到它......
这是我得到的错误
sqlalchemy.exc.DBAPIError: (Error) ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)') None None
任何帮助将非常感激!
如果未在URL中指定,则mssql+pyodbc
方言的默认驱动程序将为“SQL Server”[1]。 这意味着你需要在/etc/unixODBC/odbcinst.ini中有一个如下所示的部分:
[SQL Server]
Driver=/path/to/library.so
它在Windows上“自动”工作,因为如果打开管理员工具 - > 数据源(ODBC) ,您很可能会在“ 驱动程序”选项卡下找到名为“SQL Server”的条目。
在Linux上,您可以使用FreeTDS驱动程序,也可以使用Microsoft的官方驱动程序(我推荐这个)。
安装驱动程序后,你应该在/etc/unixODBC/odbcinst.ini中有这样的东西:
[FreeTDS]
Driver=/usr/lib/libtdsodbc.so
Threading=1
[ODBC Driver 11 for SQL Server]
Description=Microsoft ODBC Driver 11 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0
Threading=1
UsageCount=1
然后,您只需要向URL添加driver
查询字符串参数,其值与节名称匹配。
使用FreeTDS的示例网址:
mssql+pyodbc://user:pass@ip_address/database_name?driver=FreeTDS
官方驱动程序的示例URL:
mssql+pyodbc://user:pass@ip_address/database_name?driver=ODBC+Driver+11+for+SQL+Server
您收到的错误可能表示没有名称为IM002的DSN设置。 您是否尝试过直接测试ODBC连接以验证它是否已正确设置? 您是否安装了相应的Microsoft SQL Server数据库驱动程序?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.