Skip to content

Changelog

[1.2.1] - 2026-06-20

Fixed

  • Security extras (bcrypt, cryptography) now correctly declared in pyproject.toml
  • pip install mydborm[security] now works correctly

[1.2.0] - 2026-06-20

Added

  • PasswordField — one-way bcrypt hashing for user passwords
  • Auto-hashes on create() / update()
  • PasswordField.verify(plain, hashed) → True/False
  • PasswordField.hash(plain, rounds=12) → hash string
  • Configurable work factor (rounds)
  • EncryptedField — two-way AES encryption (Fernet/AES-128-CBC)
  • Auto-encrypts on create() / update()
  • EncryptedField.generate_key() → new Fernet key
  • EncryptedField.encrypt(plain, key) → ciphertext
  • EncryptedField.decrypt(cipher, key) → plaintext
  • field.decrypt_value(cipher) → plaintext
  • pip install mydborm[security] — optional security dependencies
  • 35 new tests — total: 658 tests

[1.1.0] - 2026-06-20

Added

  • 17 new field types with full MySQL ↔ YugabyteDB dialect mapping:
  • TinyIntField — TINYINT → SMALLINT
  • SmallIntField — SMALLINT → SMALLINT
  • BigIntField — BIGINT → BIGINT
  • UnsignedBigIntField — BIGINT UNSIGNED → NUMERIC(20)
  • DoubleField — DOUBLE → DOUBLE PRECISION
  • BitField(n) — BIT(n) → BIT(n)
  • CharField(n) — CHAR(n) → CHAR(n)
  • TinyTextField — TINYTEXT → TEXT
  • MediumTextField — MEDIUMTEXT → TEXT
  • LongTextField — LONGTEXT → TEXT
  • BinaryField(n) — BINARY(n) → BYTEA
  • VarBinaryField(n) — VARBINARY(n) → BYTEA
  • BlobField — BLOB/MEDIUMBLOB/LONGBLOB → BYTEA
  • TimeField — TIME → TIME
  • TimestampField — TIMESTAMP → TIMESTAMPTZ
  • EnumField(choices) — ENUM(...) → VARCHAR(n)
  • SetField(choices) — SET(...) → TEXT[]
  • 62 new tests — total: 623 tests

[1.0.1] - 2026-06-19

Fixed

  • CLI version test uses dynamic version check
  • Security extra properly declared in pyproject.toml

[1.0.0] - 2026-06-19 — Stable release

Added

  • MkDocs documentation site at https://codengers.github.io/mydborm/
  • Type hints and docstring improvements
  • Production/Stable PyPI classifier
  • docs optional dependencies group
  • API stability guarantee

[0.8.0] - 2026-06-19

Added

  • Auto-migration generation — generate(), apply_migration_file(), list_migration_files()
  • mydborm generate CLI command
  • GROUP BY + HAVING in QueryBuilder — .group_by(), .having()
  • Subquery support — .subquery(field) + __in subquery
  • Performance benchmarks — mydborm vs SQLAlchemy vs Peewee vs YugabyteDB
  • 26 new auto-migration tests + 26 GROUP BY tests — total: 561 tests

[0.7.0] - 2026-06-19

Added

  • Coverage 44% → 88% (+44%)
  • tests/test_dialects.py — 42 tests, MySQL + YugabyteDB dialect 100% coverage
  • tests/test_migrations.py — 31 tests, migration engine 90% coverage
  • tests/test_cli.py — 35 tests, all 6 CLI commands tested
  • Custom validators — EmailValidator, UrlValidator, RegexValidator, RangeValidator, MinLengthValidator, ChoiceValidator
  • Field.validators parameter — attach validators to any field
  • Model.__validators__ — cross-field validation rules
  • 48 validator tests — total: 509 tests

[0.6.0] - 2026-06-19

Added

  • Session — identity map, change tracking, unit of work
  • ObjectState — NEW, CLEAN, DIRTY, DELETED, DETACHED
  • TrackedInstance — wraps ModelInstance with state tracking
  • TrackingDict — auto-marks dirty fields on assignment
  • session.get(), session.add(), session.delete()
  • session.flush(), session.commit(), session.rollback()
  • session.is_dirty(), session.dirty_fields(), session.original_value()
  • Context manager support — auto flush+commit, rollback on exception
  • LazyRelation descriptor — lazy loading with caching
  • QueryBuilder.include() — eager loading, N+1 prevention
  • ModelInstance.__getattr__ fix — descriptor-aware attribute access
  • 32 session tests + 23 lazy loading tests — total: 353 tests

[0.5.0] - 2026-06-19

Added

  • 24 custom exception types (MydbormError hierarchy)
  • Chunked bulk operations — chunked_bulk_create/update/delete
  • BulkResult — detailed result with inserted/failed/chunks/retries/duration
  • _with_retry — exponential backoff retry helper
  • Savepoints — db.savepoint(), partial rollback within transactions
  • Nested transactions — db.nested_transaction()
  • Bulk transactions — db.bulk_transaction()
  • Transaction retry — db.transaction_with_retry(retries, retry_delay)
  • UTF-8/charset configuration — db.configure(charset="utf8mb4", encoding="utf-8")
  • bulk_upsert() — ON DUPLICATE KEY UPDATE (MySQL) / ON CONFLICT DO UPDATE (YugabyteDB)
  • JOIN support — .join(), .inner_join(), .left_join(), .right_join()
  • Serialization — to_dict(), to_json(), to_json_dict(), from_dict(), from_json()
  • Schema validation — validate_schema(), schema_info()
  • 128 new tests — total: 298 tests

[0.4.1] - 2026-06-19

Fixed

  • YugabyteDB dialect — SERIAL primary keys (not AUTO_INCREMENT)
  • YugabyteDB — native BOOLEAN (not TINYINT(1))
  • YugabyteDB — JSONB (not JSON)
  • YugabyteDB — double-quote identifiers (not backticks)
  • YugabyteDB — RETURNING id on INSERT (for lastrowid)
  • to_sql_def() accepts dialect parameter
  • YugabyteDB tests skip gracefully when container not running
  • 27 YugabyteDB integration tests — total: 169 tests

[0.4.0] - 2026-06-19

Added

  • Bulk operations — bulk_create(), bulk_update(), bulk_delete()
  • Raw SQL — db.execute(), db.fetchall(), db.fetchone()
  • Transaction context manager — db.transaction()
  • db.table_exists(), db.list_tables()
  • AsyncConnectionManager — via aiomysql (MySQL) / aiopg (YugabyteDB)
  • AsyncBaseModel — full async CRUD: create, get, all, filter, update, delete, count
  • Connection pooling — db.configure_pool(), db.pool_status(), db.ping(), db.reconnect()
  • mydborm pool CLI command
  • 73 new tests — total: 142 tests

[0.3.0] - 2026-06-19

Added

  • QueryBuilder.where(), operators, .order_by(), .limit(), .offset()
  • 8 filter operators — __gt, __lt, __gte, __lte, __ne, __like, __in, __null
  • Aggregates — .sum(), .avg(), .min(), .max(), .count()
  • ModelInstance — dict + attribute access + relationship methods
  • has_many(), belongs_to(), many_to_many() relationship methods
  • GitHub Actions CI — Python 3.9, 3.10, 3.11, 3.12 matrix
  • PyPI trusted publishing — auto-publish on git tag
  • 48 new tests — total: 69 tests

[0.2.0] - 2026-06-19

Added

  • BaseModel with full CRUD: create, get, all, filter, update, delete, count, exists
  • 10 field types: IntField, StrField, TextField, BoolField, FloatField, DecimalField, DateField, DateTimeField, JSONField, ForeignKeyField
  • Thread-safe ConnectionManager with pool support
  • MySQL 8+ + YugabyteDB (YSQL) dialect support
  • Schema migration engine — migrate(), migration_status(), rollback()
  • Rich CLI — version, ping, tables, inspect, migrate
  • 21 tests

[0.1.0] - 2026-01-01

Added

  • Initial release with basic project scaffold