InterBasePython

An InterBase driver that implements Python Database API 2.0 support

16
1
Python

InterBase Driver for Python

InterBase

A powerful, PEP-249-compliant Python driver for InterBase, supporting both 32-bit and 64-bit.

The InterBase Driver for Python is based on the FDB driver and provides access to the InterBase RDBMS using a robust and flexible Python interface. This package supports the Python Database API 2.0 standard (PEP-249) while offering extended access to the native InterBase API.

๐Ÿ“š InterBase Documentation
๐Ÿ”— GitHub Source Code


โœจ Features

  • PEP-249 compliance
  • Full Unicode and character set support
  • Native API access
  • Multiple independent transactions per connection
  • Distributed transaction support
  • Automatic conversion of textual data
  • Prepared statement support

๐Ÿ“ฆ Installation

Requires Python 3.x (32-bit or 64-bit version to match InterBase client).

Install via PyPI:

pip install interbase

Or install from the GitHub repository:

pip install git+https://github.com/Embarcadero/InterBasePython.git
# or via SSH:
pip install git+ssh://[email protected]/Embarcadero/InterBasePython.git

๐Ÿงช Setting Up a Test Database

cd test/files
isql -i create-test-db.sql

๐Ÿ”Œ Sample Usage

Basic Connection

import interbase

con = interbase.connect(
    host=IBTEST_HOST,                   # Hostname or IP address of the InterBase server
    database=IBTEST_DB_PATH,            # Path to the database file on the server
    user=IBTEST_USER,                   # Username for authentication
    password=IBTEST_PASSWORD,           # Password for authentication
    sql_dialect=IBTEST_SQL_DIALECT,     # SQL dialect to use (usually 1 or 3)
    ssl=IBTEST_SERVER_PUBLIC_FILE is not None,         # Enable SSL if a public server key is provided
    server_public_file=IBTEST_SERVER_PUBLIC_FILE       # Path to the server's public SSL key file (if SSL is enabled)
)

Executing a Query

cur = con.cursor()
cur.execute("SELECT * FROM employees")
for row in cur:
    print(row)

Using Parameters

cur.execute("INSERT INTO employees(name, age) VALUES (?, ?)", ("John Doe", 34))
con.commit()

Handling Transactions

Manual Transaction Control

transaction = con.main_transaction
transaction.begin()

cursor = transaction.cursor()
cursor.execute("INSERT INTO t (c1) VALUES (1)")
transaction.commit()

Using a Context Manager

import interbase

with interbase.TransactionContext(con) as tr:
    cursor = tr.cursor()
    cursor.execute("INSERT INTO t (c1) VALUES (1)")
# The transaction is automatically committed when the block ends.

๐Ÿงฐ More Examples

Explore the test folder in the GitHub Repository for full coverage of features, including:

  • Working with BLOBs
  • Using metadata APIs
  • Working with stored procedures
  • SSL support
  • Error handling

๐Ÿค Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.


๐Ÿ“œ License

This project is licensed under the Embarcadero license terms.


๐Ÿ”— Stay up to date with the latest changes and enhancements to InterBase by following the official Embarcadero Blog.