sqlalmechy 数据库连接的问题
使用orm 框架sqlalmechy的过程中,也出现了一个神坑 sqlalmechy 版本是1.4.29
# -*- coding: utf-8 -*-
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from urllib import parse
class Connection(object):
def __init__(self, host, port, user, password, database):
self.host = host
self.port = port
self.user = user
self.password = password
self.database = database
self._engine = create_engine(f"mysql+pymysql://{self.user}:{self.password}@{self.host}:\
{self.port}/{self.database}?charset=utf8mb4", echo=False)
def connect(self):
self.DBSession = sessionmaker(bind=self._engine)
return self.DBSession
@property
def engine(self):
return self._engine
如果password 中有“@”符号就连不上数据库了
解决方法1
降低sqlalmechy版本,目前只测试了1.4.7版本
解决方法2
修改代码
# -*- coding: utf-8 -*-
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from urllib import parse
class Connection(object):
def __init__(self, host, port, user, password, database):
self.host = host
self.port = port
self.user = user
self.password = parse.quote_plus(password)
self.database = database
self._engine = create_engine(f"mysql+pymysql://{self.user}:{self.password}@{self.host}:\
{self.port}/{self.database}?charset=utf8mb4", echo=False)
def connect(self):
self.DBSession = sessionmaker(bind=self._engine)
return self.DBSession
@property
def engine(self):
return self._engine
用urllib给"@"转义转成"%4"