SQLAlchemy 및 AdoDBAPI 데이터베이스 연결 오류
-
11-12-2019 - |
문제
IronPython 2.7.3 에 SqlAlchemy 0.7.8 및 AdoDAPI 2.4.2.2를 사용하여 MSSQL SQLEXPress 2012 데이터베이스에 연결하려고 시도하고 있습니다.
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 방언을 사용하지 않을 것입니다. 그러나 나는 어떤 문서를 찾을 수 없으므로, 이것은 지금 당장 갔던 것입니다.
다른 팁
addbapi가 SQLAlchemy에서 작동하지 않습니다.
현재 0.6에서 AdoDBAPI Dialect가 구현되지 않았습니다.
맨 아래로 스크롤합니다 (이것은 0.7x 설명서), 또한 0.8 문서를 확인하고 똑같은 것을 말합니다.
어떤 드라이버를 사용하고있는 드라이버를 변경해야합니다.
제휴하지 않습니다 StackOverflow