当前位置: 首页 > 面试题库 >

SQLAlchemy无法连接到mssql数据库

郦良才
2023-03-14
问题内容

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

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

然后,您只需要向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



 类似资料:
  • 刚才发现每次调用完接口都有一堆连接没关掉( 如下图 ): 于是写了一段本地代码无限循环跑发现单独执行一次是可以立刻关闭连接的即便循环跑也一直是 10-30 来回跳我估计就是每次循环好就关闭了问题不大( 代码如下 ): 但是我的 flask 应用中每次请求完连接都在一直没搞懂什么问题( 代码如下 ): 请求指点分析什么问题

  • 尝试使用以(freeTDS)作为驱动程序的SQLAlchemy连接到SQL server;如果直接使用,则连接成功: 但当我使用SQLAlchemy时,它失败了,出现了一个神秘的错误: 下面是完整的堆栈跟踪: 回溯(最近一次调用):文件“/users/purecarscomputer/anaconda/envs/tensorflow/lib/python3.5/site-packages/sqla

  • 我一直在努力使用数据库URL概述部分提到的以下连接字符串从Spring Boot应用程序连接H2数据库: 我还尝试了许多不同的tcp(服务器模式)连接组合,但仍然出现错误,例如“连接中断:”java。网运行Spring Boot app时,SocketTimeoutException:连接超时:localhost:9092”。 那么,如何解决这个问题并通过服务器模式连接到H2数据库呢?

  • 我已经把学校的IT项目带回家完成,虽然我可以在学校连接到我的数据库,但我不能在我自己的电脑上连接到它。我更改了数据库类中的目录,并且几乎100%确定该目录是正确的。它总是给我这样的错误: 驱动程序成功加载无法连接:[Microsoft][ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序java.sql.sqlException:[Microsoft][ODBC驱动程序管理器]未找到数据

  • 2012年12月19日下午7:26:55 DBConnect严重:null java.sql.sqlexception:[Microsoft][ODBC Driver Manager]未找到数据源名称,也未在sun.jdbc.ODBC.jdbc.ddc.createsqlexception(jdbcodbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.

  • 当我试图使用Spring Boot 2.2.1连接到DB2时。HikariCP池无法成功连接,但同时连接到JDBC。 null 附加的属性文件: