https://github.com/embarcadero/interbasepython
An InterBase driver that implements Python Database API 2.0 support
https://github.com/embarcadero/interbasepython
Last synced: 4 months ago
JSON representation
An InterBase driver that implements Python Database API 2.0 support
- Host: GitHub
- URL: https://github.com/embarcadero/interbasepython
- Owner: Embarcadero
- License: other
- Created: 2023-05-31T13:49:11.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-04-11T23:19:16.000Z (about 1 year ago)
- Last Synced: 2026-01-17T10:32:44.467Z (5 months ago)
- Language: Python
- Size: 1.12 MB
- Stars: 17
- Watchers: 10
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE.TXT
Awesome Lists containing this project
README
# InterBase Driver for Python
> A powerful, [PEP-249-compliant](https://peps.python.org/pep-0249/) Python driver for **InterBase**, supporting both 32-bit and 64-bit.
The **InterBase Driver for Python** is based on the [FDB driver](http://www.firebirdsql.org/en/devel-python-driver/) and provides access to the [InterBase](https://interbase.com/) 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](https://docwiki.embarcadero.com/InterBase/2020/en/Main_Page)
๐ [GitHub Source Code](https://github.com/Embarcadero/InterBasePython)
---
## โจ 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:
```bash
pip install interbase
```
Or install from the GitHub repository:
```bash
pip install git+https://github.com/Embarcadero/InterBasePython.git
# or via SSH:
pip install git+ssh://git@github.com/Embarcadero/InterBasePython.git
```
---
## ๐งช Setting Up a Test Database
```bash
cd test/files
isql -i create-test-db.sql
```
---
## ๐ Sample Usage
### Basic Connection
```python
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
```python
cur = con.cursor()
cur.execute("SELECT * FROM employees")
for row in cur:
print(row)
```
### Using Parameters
```python
cur.execute("INSERT INTO employees(name, age) VALUES (?, ?)", ("John Doe", 34))
con.commit()
```
### Handling Transactions
#### Manual Transaction Control
```python
transaction = con.main_transaction
transaction.begin()
cursor = transaction.cursor()
cursor.execute("INSERT INTO t (c1) VALUES (1)")
transaction.commit()
```
#### Using a Context Manager
```python
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](https://github.com/Embarcadero/InterBasePython) 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](https://blogs.embarcadero.com/).
