Как положить логи в таблицу mysql? - PullRequest
0 голосов
/ 21 марта 2020

Я хочу сохранить свои журналы в базе данных mysql. Поэтому я создал эту функцию, чтобы поместить строку, а затем функцию отформатировать строку в sql инъекцию и выполнить ее. Но это всегда терпит неудачу.

Моя таблица: enter image description here

Функция:

def log(string):
    sqlFormula = f'INSERT INTO logs (log) VALUES (%s)'
    string = f'({string})'
    mycursor.execute(sqlFormula, string)
    mydb.commit()

Ответы [ 2 ]

0 голосов
/ 21 марта 2020

Второй аргумент mycursor.execute() должен быть списком или кортежем, а не строкой. Вы создаете кортеж, заключая скобки в переменную и добавляя запятую, если это всего лишь один элемент, а не создавая строку, содержащую скобки.

def log(string):
    sqlFormula = f'INSERT INTO logs (log) VALUES (%s)'
    mycursor.execute(sqlFormula, (string,))
    mydb.commit
0 голосов
/ 21 марта 2020

Функция execute принимает кортеж, но вы создаете строку с квадратными скобками. Это не одно и то же.

Вместо этого:

def log(string):
    sqlFormula = 'INSERT INTO logs (log) VALUES (%s)'
    mycursor.execute(sqlFormula, (string,))
    mydb.commit()

Еще лучше исключить эту одноразовую переменную, которая не имеет смысла:

def log(string):
    mycursor.execute('INSERT INTO logs (log) VALUES (%s)', (string,))
    mydb.commit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...