Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何参数化查询';pl/python中的WHERE子句是什么?_Python_Plpython - Fatal编程技术网

如何参数化查询';pl/python中的WHERE子句是什么?

如何参数化查询';pl/python中的WHERE子句是什么?,python,plpython,Python,Plpython,朋友们: 我一直试图在pl/python中将参数化为查询,但我肯定缺少一些简单的东西;我尝试在变量名前加上%和$,但没有成功 (也无法将结果变量传递到python日志中-但这是一个不同的问题!我确实设置了日志-可以向其发送文本字符串-但为了清晰起见,这里删掉了大量代码) 我不确定您到底在问什么,但是如果您试图参数化用于控制查询上的联接的列,那么参数就不起作用 如果确实要这样做,则可以始终使用字符串格式来创建SQL查询,如下所示: rv = plpy.execute("SELECT name_ke

朋友们:

我一直试图在pl/python中将参数化为查询,但我肯定缺少一些简单的东西;我尝试在变量名前加上%和$,但没有成功

(也无法将结果变量传递到python日志中-但这是一个不同的问题!我确实设置了日志-可以向其发送文本字符串-但为了清晰起见,这里删掉了大量代码)


我不确定您到底在问什么,但是如果您试图参数化用于控制查询上的联接的列,那么参数就不起作用

如果确实要这样做,则可以始终使用字符串格式来创建SQL查询,如下所示:

rv = plpy.execute("SELECT name_key, address_key FROM file WHERE %s = %s" %
                  (foreign_key, param_key))

如果您只是想将
外键
与字符串进行比较,Paulo会找到您想要的答案。

使用
$n
符号:

st = "SELECT name_key,address_key FROM file WHERE foreign_key = $1"
pst = plpy.prepare(st, [ "integer" ])
rv = plpy.execute(pst, [ param_key ])

如果
param_key==“2351和1=1”
param_key==“2351;更新auth_user SET password='0w3d'WHERE username='admin'”
,该怎么办?危险的东西!
$n
符号将通过正确的引用来处理安全问题。你完全正确,如果数据来自用户,则需要先对其进行消毒,然后才能用于字符串格式化。Paulo-正是我所需要的!我不太明白“整数”是输入格式,不是它的实际值。格拉齐!
st = "SELECT name_key,address_key FROM file WHERE foreign_key = $1"
pst = plpy.prepare(st, [ "integer" ])
rv = plpy.execute(pst, [ param_key ])