#python #odbc #unixodbc
Вопрос:
Есть ли способ заставить старую школьную базу данных TopSpeed (.TPS) работать на Python?
В принципе, я хочу преобразовать приложение для агрегации данных C#, которое преобразует различные данные из AS/400 DB2 и некоторых других .Файлы TPS с подключенного диска в веб-приложение Python. О части DB2 уже позаботились.
Я думал, что это можно сделать с помощью PyODBC и SQLAlchemy, но я ничего не знаю об этом типе базы данных. Что такое строка подключения? Как подключить подключенный диск к контейнеру Ubuntu? Есть ли для этого драйвер Linux или работает unixODBC? Я понятия не имею.
Все может помочь. Спасибо.
Вот строка подключения, используемая для приложения 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