Python + MySQL.Connector-Python: select_statement с переменными, определенными функцией - PullRequest
0 голосов
/ 15 ноября 2018

Вчера я запустил небольшой проект на python и, наконец, сумел сделать функцию выбора базы данных, которая работает, но мне было интересно, если кто-нибудь скажет мне, хорош ли способ, которым я написал, или в конечном итоге может привести к множеству проблем.

Идея состояла в том, чтобы создать функцию, которую я мог бы вызвать, чтобы запросить / обновить таблицу, в которой я буду хранить данные игроков для небольшой онлайн-игры, которую я хочу создать через Python, Pygame и MySQL.Connector-Python

Итак, вот код функции (я старался поддерживать его максимально чистым и интуитивно понятным, насколько я мог, с моими текущими знаниями Python, которые в настоящее время ограничены, так как я только что поднял его на этой неделе.)

Часть, в которой я не уверен, - это переменная select_statement, в которой я точно не знаю, является ли способ, которым я использовал конкатенацию, нормальным или есть способ, который прост и эффективен.

def db_select(selection, table):
    dbc = db_connect()

    if dbc:
        print("The SQL connection was successful.")
    else:
        print("The SQL connection could not be established.")

    cur = dbc.cursor()

    select_statement = "SELECT * FROM " + table + " WHERE id = %(id)s"

    cur.execute(select_statement, {'id': selection})

    print(cur.fetchone()[1])

    dbc.close()
    print("The SQL connection was closed successfully.")

1 Ответ

0 голосов
/ 15 ноября 2018

Python имеет синтаксис .format() как раз для таких ситуаций - обработка динамического значения (например, table, вставляемого в строку (включая запросы SQL).

query = "SELECT * FROM {} WHERE id = %(id)s".format(table)

Это чище и надежнее в моем повседневном использовании, чем предыдущие подходы, такие как ваш.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...