За да бъдем по-конкретни... cursor.execute()
методът приема незадължителен аргумент, който съдържа стойности, които трябва да бъдат цитирани и интерполирани в SQL шаблона/изявлението. Това НЕ се прави с обикновен %
оператор! cursor.execute(some_sql, some_params)
е НЕ същото като cursor.execute(some_sql % some_params)
Python DB-API
указва, че всеки съвместим драйвер/модул трябва да предоставя .paramstyle
атрибут, който може да бъде всеки от 'qmark', 'numeric', 'named', 'format' или 'pyformat' ... така че на теория човек може да адаптира вашите SQL заявки низове към поддържаната форма чрез интроспекция и малко мърдане. Това все пак трябва да е по-безопасно, отколкото да се опитвате сами да цитирате и интерполирате стойности във вашите SQL низове.
Беше ми особено забавно да прочета Предупреждение Никога, никога, НИКОГА не използвайте Python низ ... интерполация ... Дори и под прицел. в документите на PsycoPG.