Skip to main content

BullDB for Python

One Model. Every Database. Unified Security, AI, and High-Performance for Python.

BullDB is the world's most advanced cross-language ORM/ODM/Data Access Framework. This is the official Python package.

With BullDB, you define a single Active Record model class and query it seamlessly across relational SQL engines (PostgreSQL, SQLite), document stores (MongoDB), key-value stores (Redis), and vector/graph databases under a unified schema-driven interface.


Installation

Install the package via pip:

pip install bulldb

Ensure you have your environment database configs set, or use the default SQLite in-memory pool for quick starts.


Key Features

  1. Active Record Models: Native Python classes inheriting from BaseModel with clean type annotations.
  2. Auto-Migrations: Transparent schema diffing and table modification/reconstruction.
  3. Zero-Dependency Field Encryption: Advanced AES-256-GCM secure field encryption with runtime key override (set_encryption_key) and secure random fallbacks.
  4. Cross-Language Compatibility: Standardized binary payload layout (nonce (12b) + tag (16b) + ciphertext) allowing decryption across Python, TypeScript, Go, Rust, and C#.
  5. Native AI Embeddings: Built-in HTTP clients for OpenAI, Gemini, and Ollama embeddings.
  6. Performance Cache: Transparent local TTL caching and telemetry/observability engines.

Quick Start Example

Here is a complete, ready-to-run Python example:

import asyncio
from bulldb import BaseModel, PrimaryKey, Unique, MultiDatabase, UUID, Email, EncryptedString, HashedPassword
from bulldb.migration import MigrationEngine
from bulldb.security import SecurityEngine

# 1. Define your Active Record model
class User(BaseModel):
    id: UUID = PrimaryKey()
    email: Email = Unique()
    secret_note: str = EncryptedString()
    password: str = HashedPassword()

async def main():
    # 2. Setup Multi-Engine Database Connection
    db = MultiDatabase()
    await db.connect_all()
    BaseModel.set_db(db)
    
    # 3. Initialize and run schema migrations
    migrator = MigrationEngine(db)
    migrator.register_model(User)
    await migrator.generate_and_apply_schema()

    # 4. Optional: Override the default encryption key at runtime
    # (Default: uses BULLDB_ENCRYPTION_KEY env, or generates a secure random session key)
    SecurityEngine.set_encryption_key(b"my-custom-super-secret-key-32b-length")

    # 5. Create and save a user
    user = await User.create(
        email="developer@example.com",
        secret_note="This is highly confidential Python data.",
        password="mySecurePassword123"
    )
    print(f"Created User ID: {user.id}")
    
    # Note: Secret note is encrypted, and password is salted and hashed in the database!
    print(f"Encrypted Password in DB: {user.password}")

    # 6. Retrieve the user
    # Fetch by ID (automatic decryption of encrypted fields on load)
    fetched = await User.get_by_id(user.id)
    print(f"Decrypted Secret Note: {fetched.secret_note}")  # "This is highly confidential Python data."

    # Find first record matching conditions
    first_user = await User.find_first(email="developer@example.com")
    print(f"Found User ID: {first_user.id}")

    # 7. Password verification
    is_valid = SecurityEngine.verify_password("mySecurePassword123", fetched.password)
    print(f"Password Valid: {is_valid}")  # True

    # 8. Clean up / delete user
    await user.delete()
    print("User deleted successfully.")
    
    await db.disconnect_all()

if __name__ == "__main__":
    asyncio.run(main())

AI Embeddings & RAG Pipelines

Instantiate a RAG pipeline on your document models:

from bulldb.ai import RAGPipeline

# Define a Document model
class Document(BaseModel):
    id: UUID = PrimaryKey()
    text: str
    vector_val: list  # Stored embeddings

# Set up and ingest a document
pipeline = RAGPipeline(Document, vector_field="vector_val", text_field="text")
await pipeline.ingest_document("BullDB makes multi-language database access a breeze.")

# Query semantic similarity
results = await pipeline.query_similarity("multi-language database", limit=1)
for doc in results:
    print(f"Similarity Match: {doc.text}")

License

This package is licensed under the MIT License.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bulldb-1.0.23.tar.gz (28.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bulldb-1.0.23-py3-none-any.whl (27.9 kB view details)

Uploaded Python 3

File details

Details for the file bulldb-1.0.23.tar.gz.

File metadata

  • Download URL: bulldb-1.0.23.tar.gz
  • Upload date:
  • Size: 28.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bulldb-1.0.23.tar.gz
Algorithm Hash digest
SHA256 044944a561db516d684a192ddedc680cfb9787757806c989608c1e9c0fb00cda
MD5 ce8f58d32f7d6064675d4cea52df61d4
BLAKE2b-256 929f653a4a1c8c4a2dc4034e7fd4af55a6cb3b6ac68edc41b0d8245cf51c5575

See more details on using hashes here.

Provenance

The following attestation bundles were made for bulldb-1.0.23.tar.gz:

Publisher: publish.yml on vikukumar/bulldb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bulldb-1.0.23-py3-none-any.whl.

File metadata

  • Download URL: bulldb-1.0.23-py3-none-any.whl
  • Upload date:
  • Size: 27.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bulldb-1.0.23-py3-none-any.whl
Algorithm Hash digest
SHA256 7ce3199d1857908f969cbfb3d0b160e8a220ca5f390a5fdca9da0cd43d355f37
MD5 f3d04794d9f956740b01dc7ad8be5d36
BLAKE2b-256 800d0ef9d5da1cfc69200b0114861a45e79d973d33a02ebb8417b708fcefd5fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for bulldb-1.0.23-py3-none-any.whl:

Publisher: publish.yml on vikukumar/bulldb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.0.29

2 files

1.0.28

2 files

1.0.27

2 files

1.0.26

2 files

1.0.25

2 files

1.0.24

2 files

This release

1.0.23 This release

2 files

1.0.22

2 files

1.0.21

2 files

1.0.20

2 files

1.0.19

2 files

1.0.18

2 files

1.0.17

2 files

1.0.16

2 files

1.0.15

2 files

1.0.14

2 files

1.0.0.13

2 files

1.0.0.12

2 files

1.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page