Question

Je tente de vous connecter à une base de données MSSQL SQLEXPress 2012 à l'aide de SQLALCHEMY 0.7.8 et Adodapi 2.4.2.2 sur IronPython 2.7.3

Je suis capable de créer un moteur SQLalchemy, mais quand une requête est faite, je reçois: "TypeError:" objet "non constitué est inscrit"

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

code utilisé:

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 semble fonctionner correctement dessus, c'est-à-dire.Je peux créer une connexion, puis utiliser un curseur pour interroger sans problèmes, il semble être quelque chose dans Sqlalchemy.

Quelqu'un des idées?

Était-ce utile?

La solution

Et nous avons une solution de contournement:

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

avec cela, mon objet de session fonctionne comme normal.

Je n'utilise probablement pas le dialecte Adodbapi comme prévu par celui qui l'a fait, mais je ne trouve aucune documentation, c'est ce que je suis allé avec pour l'instant.

Autres conseils

À peu près sûr que Adodbapi ne fonctionne pas avec SQLalchemy.

La dialecte Adodbapi n'est pas implémentée pour 0,6 pour le moment.

Faites défiler jusqu'au fond même (il s'agit de la documentation de 0,7 fois), j'ai également vérifié 0.8 documentation et dit la même chose.

On dirait que vous devrez changer le pilote que vous utilisez.

J'utilise SQLALCMY pour vous connecter à une base de données PostgreSQL à l'aide du psycopg2.Je ne suis pas sûr, mais en lisant la documentation, je pense que vous devez télécharger le pyodbc ,Il semble être mieux supporté qu'Adodbapi.Une fois que vous l'avez installé, essayez la déclaration suivante pour créer le moteur

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

ou vous pouvez vérifier différentes manières d'écrire la chaîne de connexion ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top