使用django替换SQL语句中的变量

使用django替换SQL语句中的变量,django,psql,Django,Psql,我在使用原始sql查询时遇到了一个问题,该查询有一个变量表名,如 cursor.execute("SELECT description FROM %s WHERE id = 1", [table_name]) %s替换双引号中执行不正确的字符串。当我执行上述语句时,我得到 “名称错误:未定义名称‘nike_tshirts’” 您只需将表格名称放在引号之间'table\u name'/“table\u name”或在以下之前定义变量:table\u name='nike\u tshirts' 因

我在使用原始sql查询时遇到了一个问题,该查询有一个变量表名,如

cursor.execute("SELECT description FROM %s WHERE id = 1", [table_name])
%s
替换双引号中执行不正确的字符串。当我执行上述语句时,我得到

“名称错误:未定义名称‘nike_tshirts’”


您只需将表格名称放在引号之间
'table\u name'
/
“table\u name”
或在以下之前定义变量:
table\u name='nike\u tshirts'

因此:

应该很好用


Python会引发NameError,因为当您试图引用字符串时,它认为您引用的是变量。

您不会从该代码中得到该错误。请显示完整的回溯(Pdb)光标。执行(“从%s中选择描述,其中id=1,[表格名称])***编程错误:在“'nike_tshirts'”第1行或附近出现语法错误:从'nike_tshirts'中选择描述,其中id=1是Postgres中的表格nike_tshirts所有小写字母?是的。当我用nike_tShirt替换%s时,该声明工作得非常好,但当我以这种方式发送时,它却没有工作。这显然是一个不同的错误;你为什么要发布原始版本?它不起作用。Python使用单引号替换变量,如-cursor.execute(“从'nike_tshirts'中选择描述,其中id=1”)。有没有一种方法可以在不使用单引号的情况下传递table_name参数?
cursor.execute("SELECT description FROM %s WHERE id = 1", 'nike_tshirts')
table_name = 'nike_tshirts'
cursor.execute("SELECT description FROM %s WHERE id = 1", table_name)