Domanda

Sto tentando di connettersi a un database MSSQL SQLEXPRESS 2012 utilizzando SQLalchemy 0.7.8 e ADODAPI 2.4.2.2 su Ironpython 2.7.3

Sono in grado di creare un motore SQLalchemy, tuttavia quando viene fatta una query, ottengo: "TypeError: Object 'NoneType' è unsoccritto"

Traceback:

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
.

Codice utilizzato:

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 sembra funzionare bene su è proprio, cioè.Posso creare una connessione e quindi utilizzare un cursore da interrogare senza problemi, sembra essere qualcosa in SQLalchemy.

Chiunque qualsiasi idea?

È stato utile?

Soluzione

E abbiamo una soluzione alternativa:

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()
.

Con questo oggetto della mia sessione funziona come normale.

Probabilmente non utilizzo il dialetto Adodbapi come previsto da chi ha reso, ma non riesco a trovare alcuna documentazione, quindi questo è quello che sono andato per ora.

Altri suggerimenti

Adodbapi abbastanza sicuro non funziona con SQLalchemy.

Il dialetto Adodbapi non è implementato per 0.6 in questo momento.

Scorri fino in fondo, (questa è una documentazione di 0,7x), ho anche controllato 0,8 documentazione e dice la stessa cosa.

Sembra che tu dovrai cambiare quale driver stai usando.

I Uso SQLALCMY per connettersi a un database PostgreSQL utilizzando PSYCOPG2.Non sono sicuro, ma leggendo la documentazione, penso che tu abbia bisogno di scaricare il pyodbc ,Sembra essere meglio supportato di Adodbapi.Dopo averlo installato, prova la seguente istruzione per creare il motore

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

O puoi controllare diversi modi di scrivere la stringa di connessione qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top