Вопрос

Я пытаюсь подключиться к базе данных MSSQL SQLEXPRESS 2012 с использованием SQLALCHEMY 0.7.8 и ADODAPI 2.4.2.2 на IronPython 2.7.3

Я могу создать двигатель SQLALCHEMY, однако, если запрос сделан, я получаю: Объект «ImeError»: «NONETYPE» является несущественным «

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
.

Используется код:

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.

Диалакт ADODBAPI не реализован на 0,6 в это время.

Прокрутите до самой нижней части, (это 0,7x документация), я также проверил 0,8 документации, и он говорит о том же.

Похоже, вам придется изменить, какой драйвер вы используете.

Я использую SQLALCMY для подключения к базе данных PostgreSQL с помощью PSYCOPG2.Я не уверен, но, читая документацию, я думаю, вам нужно скачать pyodbc ,Кажется, лучше поддерживать, чем AdodBapi.Как только вы установили его, попробуйте следующее утверждение, чтобы создать двигатель

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

Или вы можете проверить различные способы написания строки подключения здесь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top