MySQL and MariaDB

Peewee provides alternate drivers for MySQL through playhouse.mysql_ext.

class MySQLConnectorDatabase(database, **kwargs)

Database implementation using the official mysql-connector-python driver instead of pymysql.

from playhouse.mysql_ext import MySQLConnectorDatabase

db = MySQLConnectorDatabase('my_db', host='1.2.3.4', user='mysql')
class PooledMySQLConnectorDatabase(database, **kwargs)

Connection-pooling variant of MySQLConnectorDatabase.

class MariaDBConnectorDatabase(database, **kwargs)

Database implementation using the mariadb-connector driver.

Note

Does not accept charset, sql_mode, or use_unicode parameters (charset is always utf8mb4).

from playhouse.mysql_ext import MariaDBConnectorDatabase

db = MariaDBConnectorDatabase('my_db', host='1.2.3.4', user='mysql')
class PooledMariaDBConnectorDatabase(database, **kwargs)

Connection-pooling variant of MariaDBConnectorDatabase.

MySQL-specific helpers:

class JSONField

Extends TextField with transparent JSON encoding/decoding.

extract(path)

Extract a value from a JSON document at the given JSON path (e.g. '$.key').

Match(columns, expr, modifier=None)

Helper for MySQL full-text search using MATCH ... AGAINST syntax.

Parameters:
  • columns – A single Field or a tuple of fields.

  • expr (str) – Full-text search expression.

  • modifier (str) – Optional modifier, e.g. 'IN BOOLEAN MODE'.

from playhouse.mysql_ext import Match

Post.select().where(
    Match((Post.title, Post.body), 'python asyncio',
          modifier='IN BOOLEAN MODE'))