2014-01-19 4 views
1

У меня есть следующие:Динамическая длина арг SQL

sql = 'INSERT INTO home_title VALUES (%s, %s, %s, %s, %s)' 

Однако длина аргументов 57. Как я динамически создать (% S,% s, ...) на основе умножения 57?

+0

Почему вы не просто сцепить строки непосредственно? Должно быть быстрее и проще, чем использовать синтаксис форматирования, нет? http://www.skymind.com/~ocrow/python_string/ – claj

+1

@claj: извините? Вы не используете форматирование строк для параметров SQL, чтобы не открывать себя атаке SQL. Заполнители '% s' не используются для форматирования строк здесь. –

+0

Хорошо! «Нет!» тогда. Благодарю. – claj

ответ

4

Вы можете создавать их с:

sql = 'INSERT INTO home_title VALUES ({})'.format(', '.join(['%s'] * 57)) 

Это интерполяцию 57 '%s' строки соединяются вместе с запятой и пробелом.

Demo с меньшим количеством аргументов:

>>> 'INSERT INTO home_title VALUES ({})'.format(', '.join(['%s'] * 5)) 
'INSERT INTO home_title VALUES (%s, %s, %s, %s, %s)' 
+0

вы избили меня :) – tayfun

+0

Тип быстрее! :-) –

+0

+ Добавить дополнительную скобку в конце – David542

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