Оказывается драйвер для взаимодействия с FireBird (KInterbasDB) доступен только для Python 2.x, так что будем использовать ODBC. Для этого качаем:
- Python for Windows Extensions – Python расширение для работы с COM, сервисами, буфером обмена и т.д.
- Firebird ODBC Driver
Затем создаем файл конфигурации conf.ini
[base]
base=127.0.0.1:D:\BASE\BASE.FDB
user=SYSDBA
password=masterkey
base=127.0.0.1:D:\BASE\BASE.FDB
user=SYSDBA
password=masterkey
Затем создаем сам скрипт, с таким содержанием:
Всё оказывается очень просто;)
- import configparser
- import os
- import sys
- import odbc
- import csv
- # --- читаем настройки ---
- ini_file = os.path.dirname(sys.argv[0]);
- if ini_file[-1] != os.sep:
- ini_file = ini_file + os.sep
- ini_file = ini_file + 'conf.ini'
- print('Файл кофигурации: ' + ini_file)
- if not os.path.exists(ini_file):
- print('!!! Файл конфигурации не найден.')
- sys.exit(0)
- try:
- config = configparser.ConfigParser()
- config.read(ini_file)
- if not config.has_section('base'):
- print('В ini файле не обнаружена секция "Base"')
- sys.exit(0)
- pBase = {}
- list_key = config.options('base')
- for key in list_key:
- pBase[key] =config.get('base',key)
- except Exception as info:
- print('!!! Ошибка чтения настроек: ' + str(info))
- sys.exit(0)
- # --- работаем с базой ---
- str_connect = "Driver=Firebird/InterBase(r) driver;UID=%s;PWD=%s;DBNAME=%s;" % (pBase['user'],pBase['password'],pBase['base']);
- print(str_connect)
- db = odbc.odbc(str_connect)
- cursor = db.cursor()
- cursor.execute("select * from AVTO_IN_TMP")
- result = cursor.fetchall()
- # ---- writing results ----
- with open('some.csv', 'w+', encoding='cp1251', newline='') as f:
- writer=csv.writer(f, dialect=csv.excel)
- writer.writerows(result)
- f.close()
- db.close()
Идея http://borisnote.wordpress.com/2010/04/26/pythonodbcfirebird/
Комментариев нет:
Отправить комментарий