Как подключить мою базу данных Sybase с помощью SQLAlchemy (1.3.18) с Python (3.8.3)?
Я использую SQL Server с библиотекой SQLAlchemy 1.3.18, и благодаря fast_executemany = True теперь он работает быстрее, чем раньше.
Мне нужно установить связь с базой данных Sybase. У меня следующая ошибка:
TypeError: недопустимые аргументы 'fast_executemany' отправлены в create_engine() с использованием конфигурации SybaseDialect_pyodbc/QueuePool/Engine.
Это будет проблемой для меня, потому что я хочу быстрое соединение, а также быструю запись в моей базе данных, но даже если я удалю эти аргументы из метода, у меня будет следующая ошибка:
sqlalchemy.exc.OperationnalError: (pyodbc.OperationnalError)
вот код:
engine = sqlalchemy.create_engine(con['sql']['connexion_string'])
с участием con['sql']['connexion_string'] = "sybase+pyodbc://<user>:<password>@server_name/[db_name]driver=ODBC Driver 13 for SQL Server"
Я думаю, что это исходит от драйвера (возможно, я ошибаюсь), но я не знаю, какой из них, и в документации я понял, что мы должны использовать pyodbc, поэтому драйверы ODBC.
3 ответа
Итак, после долгих поисков я нашел кое-что, что у меня работает.
Вы должны писать как odbc-соединение:
params = (
"DRIVER = "+driver+";"\
"SERVER = "+server+";"\
"DATABASE = "+database+";"\
"PORT = "+port+";"\
"UID = "+user+";"\
"PWD= "+password+";"
params = urllib.parse.quote_plus(params)
где params - это ваше соединение odbc.
А потом сделайте так:
connexion_string = 'sybase+pyodbc:///?odbc_connect = %s'%params)
с этой строкой подключения вы можете выполнить sqlalchemy.create_engine(connexion_string)
Внутренний диалект sybase не поддерживает fast_executemany, а внешний диалект поддерживает.
Обратите внимание, что вам потребуется использовать драйвер ODBC SAP для ASE; FreeTDS ODBC не будет работать с fast_executemany.
Для тех, кто в будущем, вот как я исправил свою проблему в Windows:
получить путь ODBC dsn: start>control_panel>admin_tools>ODBC_Data_source(64-bit)>2 варианта здесь: проверьте вкладку системного DSN. вы можете увидеть что-то вроде «прототип» с драйвером SQL Anywhere 17. или вам придется создать свой собственный DSN под
File Dsn
> Добавить > {выберите диалект} > {Перейти к сохранению пути к файлу} > затем нажмите
Finish
. вам будет предложено ввести информацию о Sql Anywhere.... имя базы данных, Uid, PWD и т. д.... ознакомьтесь с ответом Чада Кеннеди для настройки пользовательской ошибки ODBC Pyodbc Имя источника данных не найдено, и драйвер по умолчанию не указан парадокс
- не забудьте проверить соединение DSN, когда вы все это выяснили.
как только это будет сделано,
engine = create_engine("sybase+pyodbc://<DSN_username>:<DSN_password>@<DSN_file_name,eg_prototype>")