Sqlalchemy, Setting Mysql Charset As `create_engine` Argument
I create sqlalchemy engine connecting to MySQL database. I want to specify charset as create_engine argument. If I use create_engine liKe that: create_engine('mysql+mysqldb://pd:p
Solution 1:
the additional DBAPI arguments, when passed separately, are passed via connect_args.
Solution 2:
You can use sqlalchemy.engine.url
.URL class
import os
from sqlalchemy import create_engine
from sqlalchemy.engine.urlimportURLDB = {
'drivername': 'mysql',
'host': '127.0.0.1',
'port': '3306',
'username': os.environ['DBUNAME'],
'password': os.environ['DBPASS'],
'database': os.environ['DBNAME']
}
engine = create_engine(URL(**DB), connect_args={'charset':'utf8'})
Or even better
DB = {
'drivername': 'mysql',
'host': '127.0.0.1',
'port': '3306',
'username': os.environ['DBUNAME'],
'password': os.environ['DBPASS'],
'database': os.environ['DBNAME'],
'query': {'charset':'utf8'}
}
engine = create_engine(URL(**DB))
According to the docsURL
class has the following parameters
- drivername – the name of the database backend. This name will correspond to a module in sqlalchemy/databases or a third party plug-in.
- username – The user name.
- password – database password.
- host – The name of the host.
- port – The port number.
- database – The database name.
- query – A dictionary of options to be passed to the dialect and/or the DBAPI upon connect.
Post a Comment for "Sqlalchemy, Setting Mysql Charset As `create_engine` Argument"