В данном примере взаимодействия с БД 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 Parameters: dsn – Connection string in format [host[/port]]:database user (string) – User name. If not specified, fdb attempts to use ISC_USER envar. password (string) – User password. If not specified, fdb attempts to use ISC_PASSWORD envar. host (string) – Server host machine specification. port (integer) – Port used by Firebird server. database (string) – Database specification (file spec. or alias) sql_dialect – SQL Dialect for connection. role (string) – User role. charset (string) – Character set for connection. buffers (integer) – Page case size override for connection. force_writes (integer) – Forced writes override for connection. no_reserve (integer) – Page space reservation override for connection. db_key_scope (integer) – DBKEY scope override for connection. isolation_level (0, 1, 2 or 3) – Default transaction isolation level for connection (not used). connection_class (subclass ofConnection
) – Custom connection class fb_library_name (string) – Full path to Firebird client library. Seeload_api()
for details. no_gc (integer) – No Garbage Collection flag. no_db_triggers (integer) – No database triggers flag (FB 2.1). no_linger (integer) – No linger flag (FB3). Returns: Connection to database.