Files
mariadb-connector-python/mariadb/__init__.py
2025-07-02 19:48:48 +02:00

104 lines
5.9 KiB
Python

'''
MariaDB Connector/Python module enables python programs to access MariaDB and
MySQL databases, using an API which is compliant with the Python DB API 2.0
(PEP-249).
'''
import mariadb
from ._mariadb import (
DataError,
DatabaseError,
Error,
IntegrityError,
InterfaceError,
InternalError,
NotSupportedError,
OperationalError,
PoolError,
ProgrammingError,
Warning,
mariadbapi_version,
_have_asan,
)
from .field import fieldinfo
from mariadb.dbapi20 import * # noqa: F401,F403
from mariadb.connectionpool import * # noqa: F401,F403
from mariadb.cursors import Cursor
from mariadb.release_info import __version__ as __version__
from mariadb.release_info import __version_info__ as __version_info__
from mariadb.release_info import __author__ as __author__
from mariadb.connections import Connection
# disable for now, until tests are in place
# from mariadb.pooling import *
_POOLS = _CONNECTION_POOLS = {}
__all__ = ["DataError", "DatabaseError", "Error", "IntegrityError",
"InterfaceError", "InternalError", "NotSupportedError",
"OperationalError", "PoolError", "ProgrammingError",
"Warning", "Connection", "__version__", "__version_info__",
"__author__", "Cursor", "fieldinfo", "_have_asan"]
def connect(*args, connectionclass=mariadb.connections.Connection, **kwargs):
"""
Creates a MariaDB Connection object.
By default, the standard connectionclass mariadb.connections.Connection
will be created.
Parameter connectionclass specifies a subclass of
mariadb.Connection object. If not specified, default will be used.
This optional parameter was added in version 1.1.0.
Connection parameters are provided as a set of keyword arguments:
- **`host`** - The host name or IP address of the database server. If MariaDB Connector/Python was built with MariaDB Connector/C 3.3, it is also possible to provide a comma separated list of hosts for simple fail over in case of one or more hosts are not available.
- **`user`, `username`** - The username used to authenticate with the database server
- **`password`, `passwd`** - The password of the given user
- **`database`, `db`** - Database (schema) name to use when connecting with the database server
- **`unix_socket`** - The location of the unix socket file to use instead of using an IP port to connect. If socket authentication is enabled, this can also be used in place of a password.
- **`port`** - Port number of the database server. If not specified, the default value of 3306 will be used.
- **`connect_timeout`** - Connect timeout in seconds
- **`read_timeout`** - Read timeout in seconds
- **`write_timeout`** - Write timeout in seconds
- **`local_infile`** - Enables or disables the use of LOAD DATA LOCAL INFILE statements.
- **`compress`** (default: `False`) - Uses the compressed protocol for client server communication. If the server doesn't support compressed protocol, the default protocol will be used.
- **`init_command`** - Command(s) which will be executed when connecting and reconnecting to the database server
- **`default_file`** - Read options from the specified option file. If the file is an empty string, default configuration file(s) will be used
- **`default_group`** - Read options from the specified group
- **`plugin_dir`** - Directory which contains MariaDB client plugins.
- **`reconnect`** - Enables or disables automatic reconnect. Available since version 1.1.4
- **`ssl_key`** - Defines a path to a private key file to use for TLS. This option requires that you use the absolute path, not a relative path. The specified key must be in PEM format
- **`ssl_cert`** - Defines a path to the X509 certificate file to use for TLS. This option requires that you use the absolute path, not a relative path. The X609 certificate must be in PEM format.
- **`ssl_ca`** - Defines a path to a PEM file that should contain one or more X509 certificates for trusted Certificate Authorities (CAs) to use for TLS. This option requires that you use the absolute path, not a relative path.
- **`ssl_capath`** - Defines a path to a directory that contains one or more PEM files that contains one X509 certificate for a trusted Certificate Authority (CA)
- **`ssl_cipher`** - Defines a list of permitted cipher suites to use for TLS
- **`ssl_crlpath`** - Defines a path to a PEM file that should contain one or more revoked X509 certificates to use for TLS. This option requires that you use the absolute path, not a relative path.
- **`ssl_verify_cert`** - Enables server certificate verification.
- **`ssl`** - The connection must use TLS security, or it will fail.
- **`tls_version`** - A comma-separated list (without whitespaces) of TLS versions. Valid versions are TLSv1.0, TLSv1.1,TLSv1.2 and TLSv1.3. Added in version 1.1.7.
- **`autocommit`** (default: `False`) - Specifies the autocommit settings. True will enable autocommit, False will disable it (default).
- **`converter`** - Specifies a conversion dictionary, where keys are FIELD_TYPE values and values are conversion functions
"""
if kwargs:
if "pool_name" in kwargs:
if not kwargs["pool_name"] in mariadb._CONNECTION_POOLS:
pool = mariadb.ConnectionPool(**kwargs)
else:
pool = mariadb._CONNECTION_POOLS[kwargs["pool_name"]]
c = pool.get_connection()
return c
connection = connectionclass(*args, **kwargs)
if not isinstance(connection, mariadb.connections.Connection):
raise mariadb.ProgrammingError("%s is not an instance of "
"mariadb.Connection" % connection)
return connection
client_version_info = tuple(int(x, 10) for x in mariadbapi_version.split('.'))
client_version = client_version_info[0] * 10000 +\
client_version_info[1] * 1000 + client_version_info[2]