我正在尝试使用SQLALCHEMY 0.7.8和ADODAPI 2.4.2.2在IronPython 2.7.3中连接到MSSQL SQLEXPRESS 2012数据库2.7.3

我能够创建一个sqlalchemy引擎,但是当查询时,我得到: “TypeError:'noneType'对象是取消订阅的”

回溯:

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
. 使用代码:
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的东西。

任何想法?

有帮助吗?

解决方案

,我们有一个解决方法:

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方言,如同谁制作它,但我找不到任何文档,所以这就是我现在所做的事情。

其他提示

肯定adodbapi不适用于sqlalchemy。

adodbapi方言未实现0.6此时。 滚动到非常底部,(这是0.7x文档),我也检查了0.8个文档,它说同样的事情。

声音,你必须更改您使用的驱动程序。

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

engine = create_engine(mssql+pyodbc://user:pass@host/db)
.

或者您可以查看不同方式编写连接字符串

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top