2015-04-30 3 views
2

я столкнулся с проблемами, при попытке вставить в базу данных:Psycopg, двойные и одинарные кавычки вставить

ur_psql.execute("""insert into smth(data, filedate, filedby)""" 
       """ values('%s', NOW(), %s)""" % (data, userid)) 

где data=""" "5.09,448,1418112000"; d="scan'208" """ (строка, содержащая двойные и одинарные кавычки) Любые идеи, как вставить такую ​​строку в БД ? Благодаря

ответ

2

Вы можете прочитать об этом по адресу: http://initd.org/psycopg/docs/usage.html#the-problem-with-the-query-parameters

Просто не используйте кавычки в SQL и вместо % string Оператор Python использует второй параметр execute(), который является данными, которые вы хотите передать в SQL-запрос:

sql = "insert into smth (data, filedate, filedby) values (%s, NOW(), %s)" 
ur_psql.execute(sql, (data, userid)) 
+0

Какова должна быть схема для вставки нескольких значений/записей в один и тот же запрос? Невозможно найти аккуратное решение. –

+0

Вы можете найти пример на странице https://wiki.postgresql.org/wiki/Psycopg2_Tutorial с примером 'executemany()' и словарем. –

0

не использовать кавычки% с, psycopg2 будет знать, когда вы вставляете строку и добавить кавычки, вылетающие, что содержащиеся в строке

ur_psql.execute("""insert into smth(data, filedate, filedby)""" 
       """ values(%s, NOW(), %s)""" % (data, userid))