У цьому прикладі роботи з БД Firebird використано інформацію з таких сторінок:
У прикладі показано створення бази даних і таблиці, вставлення та вибірку записів.
Створення бази даних
import fdb
con = fdb.create_database("create database '127.0.0.1:d:\ib\python.fb' user 'sysdba' password 'masterkey'")
Створення підключення до бази даних
con = fdb.connect(host='127.0.0.1', database='d:\ib\python.fb', user='sysdba', password='masterkey', charset='UTF8')
Якщо на етапі створення бази даних або підключення виникає помилка — спробуйте явно вказати бібліотеку fbclient.dll відповідної розрядності за допомогою параметра:
, fb_library_name=’drive:\path\fbclient.dll’
Створимо таблицю з індексом
cur = con.cursor()
cur.execute("recreate table COUNTRY (ID_COUNTRY int, CNT_NAME varchar(50))")
con.commit()
cur.execute("create unique index COUNTRY_ID on COUNTRY(ID_COUNTRY)")
con.commit()
Вставимо один запис
cur = con.cursor()
cur.execute("insert into COUNTRY (ID_COUNTRY,CNT_NAME) values (?,?)",(1,"Afghanistan"))
con.commit()
Вставимо кілька записів
cur = con.cursor()
data = [
(2,'Albania'),
(3,'Algeria'),
(4,'Andorra')
]
cur.executemany("insert into COUNTRY (ID_COUNTRY,CNT_NAME) values (?,?)",data)
con.commit()
Вибірка з доступом за назвою стовпця
cur = con.cursor()
cur.execute("select ID_COUNTRY,CNT_NAME from COUNTRY")
for row in cur.itermap():
print(str(row['ID_COUNTRY']).ljust(5),row['CNT_NAME'])
Дізнатися назви стовпців, їхню розмірність і тип
cur = con.cursor()
cur.execute("select * from COUNTRY")
for fieldDesc in cur.description:
print (fieldDesc[fdb.DESCRIPTION_NAME],
fieldDesc[fdb.DESCRIPTION_DISPLAY_SIZE],
fieldDesc[fdb.DESCRIPTION_TYPE_CODE]
)
Виведення таблиці з довільною кількістю полів
cur = con.cursor()
cur.execute("select * from COUNTRY")
# друкуємо заголовок таблиці
for fieldDesc in cur.description:
print (fieldDesc[fdb.DESCRIPTION_NAME].ljust(fieldDesc[fdb.DESCRIPTION_DISPLAY_SIZE]), end="|")
print("")
print("="*63)
# виведення даних таблиці
fieldIndices = range(len(cur.description))
for row in cur:
for fieldIndex in fieldIndices:
fieldValue = str(row[fieldIndex])
fieldMaxWidth = cur.description[fieldIndex][fdb.DESCRIPTION_DISPLAY_SIZE]
print(fieldValue.ljust(fieldMaxWidth), end="|")
print("")
Довідка щодо параметрів функції connect Параметри: dsn – Рядок підключення у форматі [host[/port]]:database user (string) – Ім’я користувача. Якщо його не вказано, fdb намагається використати змінну середовища ISC_USER. password (string) – Пароль користувача. Якщо його не вказано, fdb намагається використати змінну середовища ISC_PASSWORD. host (string) – Адреса комп’ютера, на якому працює сервер. port (integer) – Порт, який використовує сервер Firebird. database (string) – Розташування бази даних (шлях до файлу або псевдонім) sql_dialect – Діалект SQL для підключення. role (string) – Роль користувача. charset (string) – Набір символів для підключення. buffers (integer) – Перевизначення розміру кешу сторінок для підключення. force_writes (integer) – Перевизначення режиму примусового запису для підключення. no_reserve (integer) – Перевизначення резервування місця на сторінках для підключення. db_key_scope (integer) – Перевизначення області дії DBKEY для підключення. isolation_level (0, 1, 2 або 3) – Типовий рівень ізоляції транзакцій для підключення (не використовується). connection_class (підкласConnection) – Власний клас підключення fb_library_name (string) – Повний шлях до клієнтської бібліотеки Firebird. Докладніше див.load_api(). no_gc (integer) – Прапорець вимкнення збирання сміття. no_db_triggers (integer) – Прапорець вимкнення тригерів бази даних (FB 2.1). no_linger (integer) – Прапорець вимкнення режиму linger (FB3). Повертає: Підключення до бази даних.
