2015-09-09 1 views
1

Я использую mariaDB (Ver 15.1 Distrib 10.0.17-MariaDB, для osx10.10 (x86_64)) и mysqlclient==1.3.6.Как внедрить метку цитаты `` `в mariaDB с помощью mysql-client?

Я просто хочу вставить строку в varcharfield.

import MySQLdb 
import json 

conn = MySQLdb.connect(
    host='localhost', 
    port=3306, 
    user='root', 
    passwd='', 
    db='ng') 

cur = conn.cursor() 

cur.execute(INSERT INTO `current_table` (`id`, `name`) VALUES (NULL, '{name}');".format(name="Lily' dog")) 

conn.commit() 

, но я всегда получал ошибку вроде этого:

_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 's dog', NULL)' at line 1") 

что я должен делать, если я хочу, чтобы вставить кавычки по MySQL-клиента?

+2

'conn.escape_string (" Lily 'dog ")'. Всегда избегайте строк. Обязательная [Bobby Tables] (http://bobby-tables.com) ссылка. – Amadan

+0

@Amadan после использования 'conn.escape_string (" Lily 'dog ")', все еще существует ошибка: '_mysql_exceptions.ProgrammingError: (1064,' У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее вашему серверу MariaDB версия для правильного синтаксиса для использования рядом с собакой \ ", NULL) \ 'в строке 1')' – Sinux

+0

Пожалуйста, покажите, как вы его использовали (редактируя сообщение и добавляя новую команду). – Amadan

ответ

1

Согласно комментарий Amadan, в в bobby-tables (сайт для предотвращения инъекций SQL), это предложить:

Using the Python DB API, don't do this:

Do NOT do it this way:

cmd = "update people set name='%s' where id='%s'" % (name, id) 
curs.execute(cmd) 

Instead, do this:

cmd = "update people set name=%s where id=%s" 
curs.execute(cmd, (name, id)) 

так в моей ситуации, просто изменить выполнить строку:

cmd = "INSERT INTO `current_table` (`id`, `name`) VALUES (NULL, %s);" 
cur.execute(cmd, ("Lily's dog")) 

и это может привести к ошибке, к которой приводит котировочная метка.

Смежные вопросы