Как установить имя базы данных позже для движка sqlalchemy? - PullRequest
0 голосов
/ 21 января 2020

У меня есть базы данных, содержащие таблицы, которые не были созданы с использованием SQLALchemy ORM, я просто запустил запрос в терминале mysql, чтобы создать их, и какое-то время я использовал mysql -connector и MySQLdb драйвер, теперь я Я хочу перейти на драйвер pymysql и начать использовать SQLAlchemy ORM.

, поэтому я узнал о расширении Automap .

Так что мне не нужно создавать класс модели. однако я также написал этот кусок пирога , чтобы получить объект соединения, который я хочу изменить таким образом, чтобы мне не нужно было указывать имя базы данных, и использую с pymsql, как показано ниже:

def getconn():
    return pymysql.connections.Connection(**_CFG)
mypool = pool.QueuePool(getconn, max_overflow=10, pool_size=5)
engine = create_engine('mysql+pymysql://', convert_unicode=True, echo=False, pool=mypool)
Base = automap_base()
Base.prepare(engine, reflect=True)

но тогда Base.classes не дает мне имена таблиц. но если я укажу имя базы данных в строке подключения, передаваемой create_engine, она будет работать нормально,

, поэтому мой вопрос состоит в том, как я могу указать имя базы данных позже, а затем вызвать Base.prepare(engine, reflect=True), чтобы мой объект подключения всегда существует, сохраняя зарезервированный размер пула, и база данных изменяется, и я запрашиваю / обновляю таблицу во вновь установленной базе данных!

Я попытался вызвать (но не сработало.)

engine.execute("USE databasename") 

, чтобы позже вызвать

Base = automap_base()
Base.prepare(engine, reflect=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...