2013-07-30 2 views
-1

мне нужно вставить значения из списков в таблицу с питоном два списка говорят:Вставить строку с 'в таблице из другой таблицы с SQL

A = [(1,2,Don't Use), (2,4, None), (3,None, Need "Access") 

Я пытался использовать pyodbc и команду SQL.

sql = "INSERT INTO New_Table(SL, ID, text) 

     VALUES ('%s', '%s', '%s)" % (A[i][0], A[i][1], A[i][2]) 

Это хорошо работает, когда текст не имеет особый характер, как " или '. Я ищу способ сделать это, поскольку я новичок в этой задаче программирования.

+0

Это называется «одной цитатой» или «котировочной меткой». Эти термины более доступны для поиска. – keyser

+0

https://code.google.com/p/pyodbc/wiki/GettingStarted#Parameters – user2357112

+2

Никогда не используйте замену строки Python SQL, поскольку ваш код будет открыт для SQL-инъекций и других уязвимостей безопасности. –

ответ

2

Здесь не нужны одиночные кавычки. Модуль pyodbc будет обрабатывать любую цитату для вас. Просто используйте соответствующий заполнитель (?) и передайте кортеж ваших параметров в качестве второго аргумента в .execute(). Например:

import pyodbc 
cnxn = pyodbc.connect('your connection string') 
cursor = cnxn.cursor() 
cursor.execute("""INSERT INTO New_Table(SL, ID, text) 
        VALUES (?,?,?);""", (A[i][0], A[i][1], A[i][2])) 
cursor.close() 
cnxn.close() 

Как уже упоминалось в комментариях, если вы вместо того, чтобы использовать строковое интерполяцию, чтобы сформировать запрос вы открываете приложение до SQL-Injection атаки.

+0

Спасибо bernie ... Я сделал то же самое, что cursor.execute (sql). То, что я не знал, использует двойную цитату три раза. Спасибо в любом случае – user2437648

+0

О, тройная цитата для многострочных строк. Пожалуйста. – bernie

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