Как подключить мою базу данных 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>")

Другие вопросы по тегам