개요
해당 글은 Sqlalchemy mysql 파트 공식 문서 을 정리한 것이다.
Sqlalchemy에서 mysql, mariadb에 지원하는 여러가지 Driver 들에 대해 알아본다.
대부분의 라이브러리들은 mysql, maria 같이 지원한다.
MySQL은 5.0.2 버전 ~ 최신 릴리스까지 지원, MariaDB는 모든 최신 버전 지원한다.
MySQL과 MariaDB는 기본적인 호환성을 유지하지만 개발은 계속해서 갈라지고 있음, SQLAlchemy에서는 두 DB간 가벼운 차이만 있어, DB 연결 URL 등을 변경할 필요 없음.
1. mysqlclient
공식 문서 : https://pypi.org/project/mysqlclient/
특징
- maria db에서도 사용 가능
- SQLAlchemy 공식적으로 지원
연결 방법 (SSL)
engine = create_engine(
# 연결 문자열
# mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>
"mysql+mysqldb://scott:tiger@192.168.0.134/test",
connect_args={
"ssl": {
"ca": "/home/gord/client-ssl/ca.pem",
"cert": "/home/gord/client-ssl/client-cert.pem",
"key": "/home/gord/client-ssl/client-key.pem"
}
}
)
2. PyMySQL
공식 문서 : https://pymysql.readthedocs.io/
특징
- maria db에서도 사용 가능
- SQLAlchemy 공식적으로 지원
연결 방법
# mysql 연결 방법 (maria도 이걸로 해도 됨)
mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
# maria 연결 방법
mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4
3. MySQL-Connetor
공식 문서 : https://pypi.org/project/mysql-connector-python/
특징
- SQLAlchemy 에서 Integration이 완벽하지는 않음
연결 방법
mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname>
4. asyncmy
공식 문서 : https://github.com/long2ice/asyncmy
특징
- mariadb에서도 사용 가능
- SQLAlchemy 에서 공식적으로 지원
- 높은 benchmark를 가진다고 함
연결 방법
# DB 연결 string
# mysql+asyncmy://user:password@host:port/dbname[?key=value&key=value...]
from sqlalchemy.ext.asyncio import create_async_engine
engine = create_async_engine("mysql+asyncmy://user:pass@hostname/dbname?charset=utf8mb4")
5. MariaDB-Connector
공식 문서 : https://pypi.org/project/mariadb/
연결 방법
mariadb+mariadbconnector://<user>:<password>@<host>[:<port>]/<dbname>
6. aiomysql
공식 문서 : https://github.com/aio-libs/aiomysql
특징
- mariadb에서도 사용 가능
- SQLAlchemy 에서 Integration이 완벽하지는 않음
연결 방법
# 연결 문자열
# mysql+aiomysql://user:password@host:port/dbname[?key=value&key=value...]
from sqlalchemy.ext.asyncio import create_async_engine
engine = create_async_engine("mysql+aiomysql://user:pass@hostname/dbname?charset=utf8mb4")
7. pyodbc
공식 문서 : https://pypi.org/project/pyodbc/
특징
- mariadb에서도 사용 가능
- SQLAlchemy 에서 Integration이 완벽하지는 않음
연결 방법
# 연결 문자열
# mysql+pyodbc://<username>:<password>@<dsnname>
import urllib
connection_string = (
'DRIVER=MySQL ODBC 8.0 ANSI Driver;'
'SERVER=localhost;'
'PORT=3307;'
'DATABASE=mydb;'
'UID=root;'
'PWD=(whatever);'
'charset=utf8mb4;'
)
params = urllib.parse.quote_plus(connection_string)
connection_uri = "mysql+pyodbc:///?odbc_connect=%s" % params
'DB > Sqlalchemy' 카테고리의 다른 글
[SQLAlchemy] (5-2) DB driver 종류 (postgresql) (1) | 2024.09.18 |
---|---|
[SQLAlchemy] (4) DML 예시 (by sqlalchemy 2.0) (2) | 2024.09.08 |
[SQLAlchemy] (3) 모델 선언 방법 (선언형, 명령형) (1) | 2024.09.08 |
[SQLAlchemy] (2) Core 방식 vs ORM 방식 (1) | 2024.08.25 |
[SQLAlchemy] (1) 기본 개념 및 동작 방식 (0) | 2024.08.24 |