MySQL Driver v0.3.0

Driver Version v0.3.0 Release Date 2026-02-19 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. See adbc-quickstarts .

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

Arrow 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: