соединение pyodbc с sqlalchemy - PullRequest
       54

соединение pyodbc с sqlalchemy

0 голосов
/ 21 сентября 2018

Я пытаюсь переключить соединение pyodbc на sqlalchemy.Рабочее соединение pyodbc:

import pyodbc
con = 'DRIVER={ODBC Driver 11 for SQL Server};SERVER=server.com\pro;DATABASE=DBase;Trusted_Connection=yes'
cnxn = pyodbc.connect(con)
cursor = cnxn.cursor()
query = "Select * from table"
cursor.execute(query)

Я пытался:

from sqlalchemy import create_engine
dns = 'mssql+pyodbc://server.com\pro/DBase?driver=SQL+Server'
engine = create_engine(dns)
engine.execute('Select * from table').fetchall()

На основе: http://docs.sqlalchemy.org/en/latest/core/engines.html

и: pandas.read_sql() НАМНОГО медленнее при использовании SQLAlchemy, чем pyodbc

(при попытке установить соединение с Trusted_Connection = Да)

Но я получаю сообщение:

OperationalError: (pyodbc.OperationalError) ('08001', '[08001] [Microsoft] [Драйвер ODBC SQL Server] [DBNETLIB] Нет существующего сервопривода SQL Server или нет. (17) (SQLDriverConnect); [08001] [Microsoft] [Драйвер ODBC SQL Server] [DBNETLIB] ConnectionOpen (Connect ()). (53) ') (Справочная информация об этой ошибке: http://sqlalche.me/e/e3q8) (извините за испанский, но он говорит, чтоSQL Server не существует)

Я почти уверен, что это связано со мной, не понимая синтаксис для подключения к двигателю. Может кто-нибудь, пожалуйста, объясните мне подробно, как преобразовать соединение изpyodbc to sqlalchemy?

Заранее спасибо!

PD: я пытаюсь реализовать sqlalchemy для использования позже в моем коде pandas.DataFrame.to_sql(engine)

1 Ответ

0 голосов
/ 22 сентября 2018

Я помню, что у меня были похожие проблемы с настройкой sqlalchemy.Я прикрепил мой синтаксис оператора двигателя.Я не помню деталей, но я помню, что выбор водителя был настоящей проблемой.Я считаю, что мне пришлось загружать драйвер ODBC 13 отдельно, но могу подтвердить, что pd.read_sql () и df.to_sql теперь работают как чудо.

driver = 'ODBC+DRIVER+13+for+SQL+Server'
engine_stmt = ("mssql+pyodbc://%s:%s@%s/%s?driver=%s" % (username, password, server, database, driver )
engine = sqlalchemy.create_engine(engine_stmt)
...