SQLAlchemy无法连接到mssql数据库

发布于 2021-01-29 15:08:50

这是我简单的测试脚本。只是试图做一个基本的选择语句。在教程中找到了基本知识。

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

任何帮助将非常感激!

关注者
0
被浏览
83
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    如果未在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
    

    然后,您只需要向driverURL添加查询字符串参数,其值与节名称匹配。

    FreeTDS的示例URL:

    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
    

    [1]
    https://bitbucket.org/sqlalchemy/sqlalchemy/src/aa3a8f016f3e4396d125b18b0510abdf72aa8af2/lib/sqlalchemy/dialects/mssql/pyodbc.py?at=default#cl-236



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看