Драйвер ODBC с максимальной скоростью для Python 3.x

#python #odbc #unixodbc

Вопрос:

Есть ли способ заставить старую школьную базу данных TopSpeed (.TPS) работать на Python?

В принципе, я хочу преобразовать приложение для агрегации данных C#, которое преобразует различные данные из AS/400 DB2 и некоторых других .Файлы TPS с подключенного диска в веб-приложение Python. О части DB2 уже позаботились.

Я думал, что это можно сделать с помощью PyODBC и SQLAlchemy, но я ничего не знаю об этом типе базы данных. Что такое строка подключения? Как подключить подключенный диск к контейнеру Ubuntu? Есть ли для этого драйвер Linux или работает unixODBC? Я понятия не имею.

Все может помочь. Спасибо.

Образец файла .TPS

Вот строка подключения, используемая для приложения C#.

строка подключения, используемая для приложения C#

Комментарии:

1. DRIVER={Topspeed ODBC Driver (Read-Only)} похоже на допустимое имя драйвера ODBC. Что произойдет, если вы попытаетесь использовать его с pyodbc?

2. Я попытался отобразить список pydodbc.drivers() на своем компьютере с Windows с установленным драйвером TopSpeed, но на нем не отображается Topspeed ODBC Driver (Read-Only) имя драйвера.

Ответ №1:

Отвечая на мой вопрос о будущем мне и другим.

Драйвер TopSpeed доступен только в 16-разрядных и 32-разрядных версиях Windows. Использование 32-битного Python и 32-битного драйвера должно работать.

К сожалению, основываясь на моих обширных исследованиях, драйвер Linux недоступен, и драйвер НЕ является БЕСПЛАТНЫМ. Я не буду размещать здесь сайт водителя по юридическим причинам, хотя быстрый поиск в Google должен показать вам, как его купить.

Кроме того, для sqlalchemy еще нет диалекта, и я не думаю, что он будет.

Для моей цели я использую pyodbc для подключения, показанное ниже:

 TPS_CONNECTION_STRING = (
    'Driver={Topspeed ODBC Driver (Read-Only)};'
    'DBQ=X:\;'
    'Extension=tps;'
)

TPS_DB_CONNECTION =pyodbc.connect(TPS_CONNECTION_STRING, autocommit=True)
 

Где DBQ находится каталог или расположение .tps файлов. Затем подключитесь и выполните запросы с помощью

 TPS_DB_CURSOR = TPS_DB_CONNECTION.cursor()
res = TPS_DB_CURSOR.execute('SELECT * FROM FILE')
TPS_DB_CURSOR.close()
 

Поскольку мы используем pyodbc соединение, мы также можем использовать функцию pandas read_sql , чтобы немедленно вернуть результаты в фрейм данных. Просто передайте объект подключения; в этом примере это будет TPS_DB_CONNECTION