Pregunta

Estoy intentando conectarme a una base de datos de MSSQL SQLEXPRESS 2012 usando SQLALCHEMY 0.7.8 y Adodapi 2.4.2.2 en IronPhyThon 2.7.3

Soy capaz de crear un motor SQLALCHEMY, sin embargo, cuando se hace una consulta que reciba: "TypeError: 'NonEtype' Objeto no está sumergible"

Corrector:

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

Código usado:

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 parece funcionar bien en su propio, es decir.Puedo crear una conexión y luego usar un cursor para consultar sin ningún problema, parece ser algo en Sqlalchemy.

¿Alguien alguna idea?

¿Fue útil?

Solución

y tenemos una solución:

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 este objeto de la sesión funciona de forma normal.

Probablemente no estoy usando el dialecto AdodBapi como lo pretende que lo haya hecho, pero no puedo encontrar ninguna documentación, por lo que es de lo que he ido por ahora.

Otros consejos

Bastante seguro de Adodbapi no funciona con SQLALCHEMY.

El dialecto AdodBapi no se implementa durante 0.6 en este momento.

Desplácese hasta la parte inferior, (esta es 0.7x Documentation), también revisé 0.8 Documentation y dice lo mismo.

Suena como si tuvieras que cambiar qué controlador estás usando.

Utilizo SQLALCMY para conectarse a una base de datos PostgreSQL usando el PsyCOPG2.No estoy seguro, pero al leer la documentación, creo que necesitas descargar el pyodbc ,Parece ser mejor apoyado que Adodbapi.Una vez que lo haya instalado, intente la siguiente declaración para crear el motor

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

O puede consultar diferentes formas de escribir la cadena de conexión aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top