1

IronPython 2.7.3 で sqlalchemy 0.7.8 と adodapi 2.4.2.2 を使用して、mssql SQLExpress 2012 データベースに接続しようとしています。

SQLalchemy エンジンを作成することはできますが、クエリを作成すると、「TypeError: 'NoneType' object is unsubscriptable」というメッセージが表示されます。

トレースバック:

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 にあるようです。

誰でもアイデアはありますか?

4

3 に答える 3

3

そして、回避策があります:

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 方言を作成者が意図したとおりに使用していない可能性がありますが、ドキュメントが見つからないため、今のところこれを使用しています。

于 2012-07-26T14:02:48.890 に答える
0

adodbapiがSQLAlchemyで動作しないことは確かです。

現時点では、adodbapi方言は0.6では実装されていません。

一番下までスクロールします(これは0.7xのドキュメントです)。0.8のドキュメントも確認しましたが、同じことがわかります。

使用しているドライバを変更する必要があるようです。

于 2012-07-25T17:01:28.013 に答える
0

sqlalcmy を使用して、psycopg2 を使用して postgresql データベースに接続します。よくわかりませんが、ドキュメントを読むと、 pyodbcをダウンロードする必要があると思います。adodbapiよりもサポートされているようです。インストールしたら、次のステートメントを試してエンジンを作成します

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

または、ここで接続文字列を記述するさまざまな方法を確認できます。

于 2012-07-26T09:42:12.047 に答える