首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLAlchemy和adodbapi数据库连接错误

SQLAlchemy和adodbapi数据库连接错误
EN

Stack Overflow用户
提问于 2012-07-25 23:36:55
回答 3查看 1.7K关注 0票数 1

我正在尝试使用IronPython 2.7.3上的sqlalchemy 0.7.8和adodapi 2.4.2.2连接到mssql SQLExpress 2012数据库。

我可以创建sqlalchemy引擎,但是当进行查询时,我会得到:"TypeError:'NoneType‘object is unsubscriptable“

TraceBack:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Program Files (x86)\IronPython 2.7\Lib\site-packages\SQLAlchemy-0.7.8-py2.7.egg\sqlalchemy\engine\base.py", line 878, in __init__
  File "C:\Program Files (x86)\IronPython 2.7\Lib\site-packages\SQLAlchemy-0.7.8-py2.7.egg\sqlalchemy\engine\base.py", line 2558, in raw_connection
  File "C:\Program Files (x86)\IronPython 2.7\Lib\site-packages\SQLAlchemy-0.7.8-py2.7.egg\sqlalchemy\pool.py", line 183, in unique_connection
  File "<string>", line 9, in <module>
  File "C:\Program Files (x86)\IronPython 2.7\Lib\site-packages\SQLAlchemy-0.7.8-py2.7.egg\sqlalchemy\engine\base.py", line 2472, in connect
TypeError: 'NoneType' object is unsubscriptable

正在使用的代码:

代码语言:javascript
复制
def conn():
    return adodbapi.connect('Provider=SQLOLEDB; Data Source=SERVER\SQLEXPRESS; 
                             Initial Catalog=db; User ID=user; Password=pass;')
engine = create_engine('mssql+adodbapi:///', creator=conn, 
                        echo = True, module=adodbapi)

adodbapi本身似乎工作得很好,即。我可以创建一个连接,然后使用游标进行查询,没有任何问题,这似乎是sqlalchemy中的一些东西。

有人有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-26 22:02:49

我们有一个变通方法:

代码语言:javascript
复制
import adodbapi
from sqlalchemy.engine import create_engine
from sqlalchemy.orm import sessionmaker
import sqlalchemy.pool as pool

def connect():
    return adodbapi.connect('Provider=SQLOLEDB.1;Data Source=mypcname\SQLEXPRESS;\
                         Initial Catalog=dbname;User ID=user; Password=pass;')

mypool = pool.QueuePool(connect)
conn = mypool.connect()
curs = conn.cursor()
curs.execute('select 1') #anything that forces open the connection

engine = create_engine('mssql+adodbapi://', module=adodbapi, pool = mypool)

Session = sessionmaker()
Session.configure(bind=engine)
sess = Session()

这样,我的会话对象就可以正常工作了。

我可能没有按照开发人员的意图使用adodbapi方言,但是我找不到任何文档,所以这就是我现在使用的语言。

票数 3
EN

Stack Overflow用户

发布于 2012-07-26 01:01:28

可以肯定的是,adodbapi不能与SQLAlchemy一起工作。

The adodbapi dialect is not implemented for 0.6 at this time.

滚动到最下面,(这是0.7x文档),我也查看了0.8文档,它说的是同样的事情。

听起来您必须更改您正在使用的驱动程序。

票数 0
EN

Stack Overflow用户

发布于 2012-07-26 17:42:12

我使用sqlalcmy通过psycopg2连接到postgresql数据库。我不确定,但通过阅读文档,我认为你需要下载pyodbc,它似乎比adodbapi支持得更好。安装完成后,尝试使用以下语句来创建引擎

代码语言:javascript
复制
engine = create_engine(mssql+pyodbc://user:pass@host/db)

或者,您可以查看编写连接字符串here的不同方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11653439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档