Python y Firebird (biblioteca fdb)

En este ejemplo de interacción con la base de datos Firebird, se utilizó información de las siguientes páginas:
El ejemplo muestra cómo crear una base de datos, una tabla, insertar y seleccionar registros.

Creación de base de datos
import fdb
con = fdb.create_database("create database '127.0.0.1:d:\ib\python.fb' user 'sysdba' password 'masterkey'")
Creación de una conexión de base de datos
con = fdb.connect(host='127.0.0.1', database='d:\ib\python.fb', user='sysdba', password='masterkey', charset='UTF8')

Crear una tabla con un índice.

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()
Insertar una fila
cur = con.cursor()
cur.execute("insert into COUNTRY (ID_COUNTRY,CNT_NAME) values (?,?)",(1,"Afghanistan"))
con.commit()
Insertar algunas filas
cur = con.cursor()
data = [
    (2,'Albania'),
    (3,'Algeria'),
    (4,'Andorra')
]
cur.executemany("insert into COUNTRY (ID_COUNTRY,CNT_NAME) values (?,?)",data)
con.commit()
Selección con acceso por nombre de columna
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'])
1     Afghanistan
2     Albania
3     Algeria
4     Andorra
nombres de columna, dimensión y tipo
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]
          )
ID_COUNTRY 11 <class 'int'>
CNT_NAME 50 <class 'str'>
Mostrar una tabla con cualquier número de columnas
cur = con.cursor()
cur.execute("select * from COUNTRY")

# print the table header
for fieldDesc in cur.description:
    print (fieldDesc[fdb.DESCRIPTION_NAME].ljust(fieldDesc[fdb.DESCRIPTION_DISPLAY_SIZE]), end="|")
print("")
print("="*63)
# output table data
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("")
ID_COUNTRY |CNT_NAME                                          |
===============================================================
1          |Afghanistan                                       |
2          |Albania                                           |
3          |Algeria                                           |
4          |Andorra                                           |

Deja un comentario

Tu dirección de correo electrónico no será publicada.