Распечатать имя таблицы, по которой выполняется запрос - PullRequest
0 голосов
/ 14 апреля 2020

Глядя на следующие строки кода:

query = "DROP TABLE IF EXISTS my_table"
cur.execute(query)
conn.commit()
# print(table_name)

Я выполняю запрос к нескольким таблицам с различным запросом и хочу вернуть имя таблицы и действие, выполняемое каждый раз. Есть ли способ получить какие-то метаданные из cur.execute или conn.commit о запущенном действии?

В приведенном выше примере я хотел бы напечатать имя таблицы (my_table) и действие (DROP TABLE). Однако я хочу, чтобы это было Dynami c. Если я создаю таблицу, я хочу указать имя создаваемой таблицы и действие (CREATE TABLE).

Спасибо.

1 Ответ

0 голосов
/ 14 апреля 2020

Быстро и грязно

tables = ['table_1', 'table_2', 'table_3']
action = 'DROP TABLE'
for table in tables:
    cur.execute(f'{str(action)} IF EXISTS {str(table)}')
    print(f'ACTION: {action}')
    print(f'TABLE:  {table}')
conn.commit()

ОДНАКО , пожалуйста, никогда не делайте ничего подобного, кроме как в крошечном приложении, которое никогда не покинет ваш компьютер, и особенно без чего-либо, что будет принимать ввод от пользователя .

Произойдут плохие вещи .

Динамическое взаимодействие с базами данных с использованием OOP это решенная проблема, и изобретать велосипед не стоит. Рассматривали ли вы использование ORM как SQLAlchemy ?

...