Передача переменных в MySQL запросов - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь передать переменную loc в свой оператор execute, чтобы получить индивидуальный номер слага из моей базы данных, но не могу понять, как передать его. Мои методы настроены таким образом, потому что есть несколько разных запросов, которые я, возможно, выполню, и мне не нужна куча повторяющегося кода.

def query(sql): 
    db = mysql.connector.connect(
        host="localhost",
        user="root",
        passwd="password!",
        database="db"
    )

    cursor = db.cursor()
    cursor.execute(sql)
    final_result = [i[0] for i in cursor.fetchall()]
    return final_result


def individual(loc):
    sql = "SELECT slug FROM auctions WHERE location = %s", loc
    return query(sql)

1 Ответ

1 голос
/ 27 мая 2020

Обычно я делаю это так:

sql = """SELECT slug FROM auctions WHERE location = %(loc_name)s
    """
cursor.execute(sql, {"loc_name": loc,})

передаю значение как словарь. чувствует себя безопаснее и аккуратнее :)

если «иногда» вам нужны все пули, а «иногда» вам нужна конкретная c пуля в зависимости от местоположения

if loc: #check if there is loc value
    sql = """SELECT slug FROM auctions WHERE location = %(loc_name)s"""
    cursor.execute(sql, {"loc_name": loc,})
else:
    sql = """SELECT slug FROM auctions"""
    cursor.execute(sql)

, которая будет работать, но кажется вроде есть стиль письма получше .. хм ..

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