문제

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 문서를 확인하고 똑같은 것을 말합니다.

어떤 드라이버를 사용하고있는 드라이버를 변경해야합니다.

psycopg2를 사용하여 PostgreSQL 데이터베이스에 SQLALCMY를 사용합니다.확실하지 않지만 문서를 읽음으로써 pyodbc 를 다운로드해야한다고 생각합니다.Adodbapi보다 더 잘 지원되는 것 같습니다.설치 한 후에는 다음 문을 시도하여 엔진을 만들

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

또는 연결 문자열을 쓰는 다른 방법을 확인할 수 있습니다 여기 .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top