質問

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はSqlalchemyでは動作しないようにしてください。

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

最下位までスクロールします(これは0.7倍のドキュメントです)、私も0.8ドキュメントをチェックし、それは同じことを言います。

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

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

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

または接続文字列の作成方法をチェックすることができます。こちら

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top