SQLAlchemy и adodbapi Ошибка подключения к базе данных
Я пытаюсь подключиться к базе данных mssql SQLExpress 2012, используя sqlalchemy 0.7.8 и adodapi 2.4.2.2 на IronPython 2.7.3
Я могу создать движок 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.
У кого-нибудь есть идеи?
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, как это было задумано кем бы то ни было, но я не могу найти никакой документации, так что это то, с чем я столкнулся на данный момент.
Я уверен, что adodbapi не работает с SQLAlchemy.
В настоящее время диалект адодбапи не реализован для 0,6.
Прокрутите до самого низа (это документация 0,7х), я также проверил документацию 0,8, и там написано то же самое.
Похоже, вам придется изменить, какой драйвер вы используете.
Я использую sqlalcmy для подключения к базе данных postgresql с помощью psycopg2. Я не уверен, но, читая документацию, я думаю, что вам нужно скачать pyodbc, он лучше поддерживается, чем adodbapi. После того, как вы установили его, попробуйте следующее утверждение, чтобы создать движок
engine = create_engine(mssql+pyodbc://user:pass@host/db)
Или вы можете проверить различные способы написания строки подключения здесь.