Skip to main content

A peewee extension for TiDB.

Project description

peewee-tidb

TiDB dialect for peewee.

Installation

Install from PyPI

pip install peewee-tidb

Install from source

pip install git+https://github.com/wd0517/peewee-tidb.git@main

Usage

from peewee import *
from peewee_tidb import TidbDatabase

db = TiDBDatabase(
    'peewee',
    host='127.0.0.1',
    port=4000,
    user='root',
    password=''
)

Using AUTO_RANDOM

AUTO_RANDOM is a feature in TiDB that generates unique IDs for a table automatically. It is similar to AUTO_INCREMENT, but it can avoid write hotspot in a single storage node caused by TiDB assigning consecutive IDs. It also have some restrictions, please refer to the documentation.

from peewee_tidb import BigAutoRandomField

class MyModel(BaseModel):
    id = BigAutoRandomField(shard_bits=6, range=54, primary_key=True)

Note

AUTO_RANDOM is supported after TiDB v3.1.0, and only support define with range after v6.5.0, so range will be ignored if TiDB version is lower than v6.5.0.

Using AUTO_ID_CACHE

AUTO_ID_CACHE allow users to set the cache size for allocating the auto-increment ID, as you may know, TiDB guarantees that AUTO_INCREMENT values are monotonic (always increasing) on a per-server basis, but its value may appear to jump dramatically if an INSERT operation is performed against another TiDB Server, This is caused by the fact that each server has its own cache which is controlled by AUTO_ID_CACHE. But from TiDB v6.4.0, it introduces a centralized auto-increment ID allocating service, you can enable MySQL compatibility mode by set AUTO_ID_CACHE to 1 when creating a table without losing performance.

To use AUTO_ID_CACHE in peewee, you can set table_settings in Meta class.

class MyModel(BaseModel):
    name = CharField(max_length=32, unique=True)

    class Meta:
        table_settings = "auto_id_cache=1;"

Some Known Issues

  • TiDB before v6.6.0 does not support FOREIGN KEY constraints(#18209).
  • TiDB before v6.2.0 does not support SAVEPOINT(#6840).

Project details


Download files

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

Source Distribution

peewee-tidb-0.1.1.tar.gz (4.5 kB view hashes)

Uploaded Source

Built Distribution

peewee_tidb-0.1.1-py3-none-any.whl (4.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page