我使用sqlalchemy并使用
url = url.URL(
drivername,
host,
username,
password,
database)
这不管用
url = url.URL(
drivername='mysql+pymysql',
host='abc.com',
username='app',
password=u'56f@;',
database='app')
logging.info(f'url:{url})给出
mysql+pymysql://app:6f%40;@abc.com/app
url = create_engine(url)
results = url.execute(sql_query).fetchall()
密码包含一个符号“@”,该符号正在被转换为%40。我不希望这种转变发生。我怎么才能避免。
发布于 2022-12-04 05:58:40
为了避免在创建SQLAlchemy引擎URL时对密码中的特殊字符进行编码,可以在将密码传递给url.URL()方法之前使用urllib.parse模块中的url.URL()方法对密码进行编码。
import sqlalchemy as sa
from urllib.parse import quote
# Create the URL object with the encoded password
engine_url = sa.engine.url.URL(
drivername,
host,
username,
quote(password),
database,
)
这将对密码中的任何特殊字符进行编码,如符号&,这样SQLAlchemy就不会将它们解释为URL语法。
https://stackoverflow.com/questions/74673195
复制相似问题