MySQL Driver v0.2.0

Driver Version v0.2.0 Tested With MySQL 9.4

This driver provides access to MySQL , a free and open-source relational database management system.

Installation

The MySQL driver can be installed with dbc :

dbc install mysql

Connecting

To connect, edit the uri option below to match your environment and run the following:

from adbc_driver_manager import dbapi

conn = dbapi.connect(
  driver="mysql",
  db_kwargs = {
    "uri": "root@tcp(localhost:3306)/demo"
  }
)

Note: The example above is for Python using the adbc-driver-manager package but the process will be similar for other driver managers.

Connection String Format

Connection strings are passed with the uri option which uses the following format:

mysql://[user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...]

Examples:

  • mysql://localhost/mydb

  • mysql://user:pass@localhost:3306/mydb

  • mysql://user:pass@host/db?charset=utf8mb4&timeout=30s

  • mysql://user@(/path/to/socket.sock)/db (Unix domain socket)

  • mysql://user@localhost/mydb (no password)

This follows MySQL’s official URI-like connection string format . Also see MySQL Connection Parameters for the complete specification.

Components:

  • scheme: mysql:// (required)

  • user: Optional (for authentication)

  • password: Optional (for authentication, requires user)

  • host: Required (must be explicitly specified)

  • port: Optional (defaults to 3306)

  • schema: Optional (can be empty, MySQL database name)

  • Query params: MySQL connection attributes

Note

Reserved characters in URI elements must be URI-encoded. For example, @ becomes %40. If you include a zone ID in an IPv6 address, the % character used as the separator must be replaced with %25.

When connecting via Unix domain sockets, use the parentheses syntax to wrap the socket path: (/path/to/socket.sock).

The driver also supports the MySQL DSN format (see Go MySQL Driver documentation ), but standard URIs are recommended.

Feature & Type Support

Feature Support
Bulk Ingestion Create
Append
Create/Append
Replace
Temporary Table
Specify target catalog
Specify target schema
Non-nullable fields are marked NOT NULL
Catalog (GetObjects) depth=catalogs
depth=db_schemas
depth=tables
depth=columns (all)
Get Parameter Schema
Get Table Schema
Prepared Statements
Transactions

Types

MySQL to Arrow

MySQL Type

Arrow Type

BIGINT

int64

BIT

binary

BOOLEAN

int64, int8 ⚠️ [1]

DATE

date32[day]

DATETIME

timestamp[us]

DOUBLE PRECISION

double

INT

int32

JSON

extension<arrow.json>

NUMERIC

decimal64

REAL

SMALLINT

int16

TIME

time64[us]

TIMESTAMP

timestamp[us], timestamp[us] (with time zone) ⚠️ [1]

VARBINARY

binary

VARCHAR

string

Arrow to MySQL

Arrrow Type MySQL Type
Bind Ingest
binary

VARBINARY

binary_view

VARBINARY

bool

BOOLEAN

date32[day]

DATE

decimal128

DECIMAL

double

DOUBLE PRECISION

fixed_size_binary

VARBINARY

float

int16

SMALLINT

int32

INT

int64

BIGINT

large_binary

VARBINARY

large_string

VARCHAR

string

VARCHAR

string_view

VARCHAR

time32[ms]

TIME

time32[s]

TIME

time64[ns]

TIME

time64[us]

TIME

timestamp[ms]

DATETIME

timestamp[ms] (with time zone)

TIMESTAMP

timestamp[ns]

DATETIME

timestamp[ns] (with time zone)

TIMESTAMP

timestamp[s]

DATETIME

timestamp[s] (with time zone)

TIMESTAMP

timestamp[us]

DATETIME

timestamp[us] (with time zone)

TIMESTAMP

Compatibility

This driver was tested on the following versions of MySQL:

  • 9.4.0 (MySQL Community Server - GPL)

Previous Versions

To see documentation for previous versions of this driver, see the following: