I am running a python app on GCP app engine which connects to cloud SQL database (mySQL). But there is an error in GCP logs that I am unable to resolve,
File “/layers/google.python.pip/pip/lib/python3.9/site-packages/sqlalchemy/dialects/mysql/mysqldb.py”, line 161, in on_connect charset_name = conn.character_set_name() AttributeError: ‘Engine’ object has no attribute ‘character_set_name’
Here is the code I am using to establish connection:
def connect_with_connector() -> sqlalchemy.engine.base.Engine:
"""
Initializes a connection pool for a Cloud SQL instance of MySQL.
Uses the Cloud SQL Python Connector package.
"""
# Note: Saving credentials in environment variables is convenient, but not
# secure - consider a more secure solution such as
# Cloud Secret Manager (https://cloud.google.com/secret-manager) to help
# keep secrets safe.
instance_connection_name = cinstance_connection_name
db_user = cdb_user
db_pass = cdb_pass
db_name = cdb_name
ip_type = cip_type
connector = Connector(ip_type)
def getconn() -> pymysql.connections.Connection:
conn: pymysql.connections.Connection = connector.connect(
instance_connection_name,
"pymysql",
user=db_user,
password=db_pass,
db=db_name,
)
return conn
pool = sqlalchemy.create_engine(
"mysql+pymysql://",
creator=getconn,
# ...
)
return pool
# Use the custom engine for SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://'
app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {
'creator': connect_with_connector
}
db = SQLAlchemy(app)
Am I missing an argument to the method?