mirror of
https://github.com/mariadb-corporation/mariadb-connector-python.git
synced 2025-08-20 16:36:15 +00:00
104 lines
5.9 KiB
Python
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]
|