当前位置: 首页 > 知识库问答 >
问题:

sqlalchemy无法连接到ms sql server

洪国兴
2023-03-14

尝试使用以pyodbc(freeTDS)作为驱动程序的SQLAlchemy连接到SQL server;如果直接使用pyodbc,则连接成功:

>>> import pyodbc
>>> conn = pyodbc.connect('DSN=serverdsn;UID=user;PWD=password')
>>> crsr = conn.cursor()
>>> rows = crsr.execute("select @@VERSION").fetchall()
>>> print(rows)
[('Microsoft Azure SQL Data Warehouse - 10.0.9248.28 Sep 12 2017 01:08:55 Copyright (c) Microsoft Corporation', )]
>>> crsr.close()
>>> conn.close()

但当我使用SQLAlchemy时,它失败了,出现了一个神秘的错误:

>>> from sqlalchemy import create_engine
>>> e = create_engine("mssql+pyodbc://user:password@serverdsn")
>>> with e.connect() as con:
...     rs = con.execute('select * from users')
...     for row in rs:
...         print(row)
... 

下面是完整的堆栈跟踪:

回溯(最近一次调用):文件“/users/purecarscomputer/anaconda/envs/tensorflow/lib/python3.5/site-packages/sqlalchemy/pool.py”,第1122行,在_do_get中返回self._pool.get(wait,self._timeout)文件“/users/purecarscomputer/anaconda/envs/tensorflow/lib/python3.5/site-packages/sqlalchemy/util/queue.py”,第145行,在get中升起

在处理上述异常时,又发生了一个异常:

回溯(最近一次调用):文件“”,第1行,在文件“/users/pureCarsComputer/Anaconda/envs/tensorflow/lib/python3.5/site-packages/sqlalchemy/engine/base.py”中,第2091行,在connect中返回self._connection_cls(self,**kwargs)文件“/users/pureCarsComputer/Anaconda/envs/tensorflow/lib/python3.5/site-packages/sqlalchemy/engine/base.py”,第90e-packages/sqlalchemy/pool.py“,第766行,in_checkout faire=_connectionRecord.checkout(pool)文件”/users/purecarscomputer/anaconda/envs/tensorflow/lib/python3.5/site-packages/sqlalchemy/pool.py“,第516行,incheckout rec=pool._do_get()文件”ction return_connectionRecord(self)文件“/users/purecarscomputer/anaconda/envs/tensorflow/lib/python3.5/site-packages/sqlalchemy/pool.py”,第461行,在init self.connect(First_connect_check=true)文件“/users/purecarscomputer/envs/tensorflow/lib/python3.5/site-packages/sqlalchemy/pool.py”,第661行,在__connect exec_once(rscomputer/anaconda/envs/tensorflow/lib/python3.5/site-packages/sqlalchemy/connectors/pyodbc.py“,第165行,在initialize super(ms方言,self)中初始化(connection)文件”/users/purecarscomputer/anaconda/envs/tensorflow/lib/python3.5/site-packages/sqlalchemy/dialects/msql/base.py“,第1742行,在initialize(ms方言)中初始化(connection最后的错误是:%s“%(视图,err))UnboundLocalError:在赋值之前引用了局部变量”err

我试过安装和卸载sqlalchemy并在google上搜索,但没有找到解决方案。有没有人有类似的问题,对正在发生的事情有头绪?

操作系统信息:

ProductName:    Mac OS X
ProductVersion: 10.12.6
BuildVersion:   16G29

共有1个答案

翁良弼
2023-03-14

下面是我用来解决具有类似症状的连接问题的连接字符串:

import urllib
from sqlalchemy import create_engine

# utilize existing odbc connection to create engine
params = urllib.quote_plus("DRIVER={}; SERVER=server; Database=database; UID=user; PWD=pw")
engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)

参考http://docs.sqlalchemy.org/en/latest/dialcts/mssql.html#pass-through-exact-pyodbc-string

 类似资料:
  • 问题内容: 这是我简单的测试脚本。只是试图做一个基本的选择语句。在教程中找到了基本知识。 经过一个小时的搜索并尝试了一些解决方案,我比开始时就更接近解决问题了。希望我在某个地方犯了一个简单的错误,但我找不到它… 这是我遇到的错误 任何帮助将非常感激! 问题答案: 如果未在URL中指定,则该方言的默认驱动程序将为“ SQL Server” [1]。这意味着您需要在/etc/unixODBC/odbc

  • 问题内容: 如何使用SQLAlchemy连接到MS Access?在他们的网站上,它说连接字符串是access + pyodbc。这是否意味着我需要连接pyodbc?由于我是新手,请保持温柔。 问题答案: 从理论上讲,这将通过create_engine(“ access:/// some_odbc_dsn”)进行,但是自从SQLAlchemy 0.5以来,Access后端就一直没有使用过,并且尚不

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

  • 问题内容: 我正在尝试使用Ruby on Rails运行Selenium的示例脚本。我必须使用代理运行它。这是我的代码: 我收到以下错误: 有人能帮我吗…?我已经尝试了好几个小时,却找不到问题…真的不知道该怎么办。 环境: Ubuntu 16.04 LTS,Firefox 45.0,rbenv 2.3.1 另一个问题:有人知道Selenium + Ruby on Rails的示例吗?我找不到真正好

  • 我正在尝试连接到MySQL服务器,但出现无法处理的错误。 java.sql.SQLNonTransientConnectionException:无法创建到数据库服务器的连接。尝试重新连接3次。放弃。com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)com.mysql.cj.jdbc.excepti

  • 我真的想不通为什么我不能用下面的代码连接到我的Django项目内的JQuery。你能告诉我是什么原因吗?多谢! null null