A Python library to manipulate DBase III database files
Project description
DBase III Python Library
This project provides a Python library to manipulate DBase III database files. It allows reading, writing, adding, and updating records in the database.
Even though this file format for databases is largely no longer in use, the present work is a minitool useful to retrieve legacy data, as much as a tribute to a beautiful part of computer history.
Features
- Read DBase III database files
- Write to DBase III database files
- Add new records
- Update existing records
- Filter and search records
Installation
To install the library, clone this repository and navigate to the project directory:
git clone https://github.com/sandy98/dbase3-py.git
cd dbase3-py
Usage
from dbase3 import DBaseFile, FieldType
test = DbaseFile.create('db/test.dbf',
[('name', FieldType.CHARACTER.value, 50, 0),
('age', FieldType.NUMERIC.value, 3, 0)])
test.add_record('John Doe', 30)
test.add_record('Jane Doe', 25)
print(test)
print(len(test))
print(test[:])
print(test.filter('name', 'ja', comp_func=self.istartswith))
The module itself, DBaseFile class and all its methods are thoroughly documented, so it should be easy to follow up.
Documentation
Classes
DBaseFile
Class to manipulate DBase III database files.
__init__(self, filename: str): Initializes an instance of DBase3.__del__(self): Closes the database file when the instance is destroyed.init(self): Initializes the database structure by reading the header and fields.
add_record(self, record_data: dict)
: Adds a new record to the database.
update_record(self, index: int, record_data: dict): Updates an existing record in the database.istartswith(f: str, v: str) -> bool: Checks if the stringfstarts with the stringv, ignoring case.iendswith(f: str, v: str) -> bool: Checks if the stringfends with the stringv, ignoring case.
create(cls, filename: str, fields: List[Tuple[str, FieldType, int, int]])
: Creates a new DBase III database file with the specified fields.
Methods
dump_record(self, key, record): Writes a record (dictionary with field names and field values) to the database at the specified index.__len__(self): Returns the number of records in the database, including records marked to be deleted.__getitem__(self, key): Returns a single record or a list of records from the database.__iter__(self): Returns an iterator over the records in the database.__str__(self): Returns a string representation of the database.
Contributing
Contributions are welcome! Please open an issue or submit a pull request.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Contact
For any questions or suggestions, please contact Domingo E. Savoretti.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dbase3-py-0.1.2.tar.gz.
File metadata
- Download URL: dbase3-py-0.1.2.tar.gz
- Upload date:
- Size: 3.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.0rc1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6ec5129ced6437cce1cb752c2018f86d6d9626557fb8ca162687ae6a35a041e
|
|
| MD5 |
56a6197fb76abd0d5261ce2e346a7e17
|
|
| BLAKE2b-256 |
6d76f1b2d79326c73c2e4f9230a8f9862f7f7a43102e03b2754be7cbc64769e8
|
File details
Details for the file dbase3_py-0.1.2-py3-none-any.whl.
File metadata
- Download URL: dbase3_py-0.1.2-py3-none-any.whl
- Upload date:
- Size: 3.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.0rc1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83a45c75fece1eff77dd35c06fadf74fa68d4127ea12b14cd214b9a9c8dac163
|
|
| MD5 |
49833a28aa52c6f3a4d6d3ee45cf5a82
|
|
| BLAKE2b-256 |
a36a91343ec871618e040c7eeaef4b93057c206959f75b68be471a7296468966
|