Пользовательский журнал Python для базы данных - PullRequest
0 голосов
/ 26 июня 2018

У меня есть следующий пример кода Python, и когда я пытаюсь выполнить, я получаю сообщение об ошибке mysql.Контекст, я пытаюсь создать пользовательские журналы, журнал сообщений, вставить в таблицу MySql для анализа.Предоставление соответствующих частей для mysql execute.

levelnum= str(record.levelno) # 40
levelname=str(record.levelname) # ERROR
msg=str(self.log_msg)   # "This error occurred: This is test message"
createtime=str(tm)  #2018-06-26 03:43:47
record.name = 'MY_LOGGER'

sql = 'INSERT INTO emp.log (log_level, log_levelname, log, created_at, created_by) VALUES ('+levelnum+ ', '+levelname+ ', '+msg+ ', '+createtime+ ', '+record.name+')'

Error message: ProgrammingError: (1064, u"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'error msg, 2018-06-26 03:43:47, MY_LOGGER)' at line 1")

Я использую mysql и пытаюсь вставить в таблицу следующее:

try:
   self.sql_cursor.execute(sql)
   self.sql_conn.commit()
 except pymysql.InternalError as e:
   print e
   print 'CRITICAL DB ERROR! Logging to database not possible!'

Я думаю, что отсутствует некоторое форматирование при передаче параметров вSQL-запрос, но не смог получить правильный.

Оцените, если кто-то может помочь исправить это.

1 Ответ

0 голосов
/ 26 июня 2018

Вы не цитируете метку времени, поэтому возникает ошибка.

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

    sql = 'INSERT INTO `emp.log` (`log_level`, `log_levelname`, `log`, `created_at`, `created_by`) VALUES (%s, %s, %s, %s, %s)'

    self.cursor.execute(sql, (levelnum, levelname, msg, createtime, record.name))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...