python的execute函数功能_使用python和postgres,execute函数中的变量?

I had a question regarding the usage of variables inside a python function which accesses the PostgreSQL server. For example, the following:

def delete():

cur.execute(

"""DELETE FROM potluck

WHERE name = var_1;"""

However, If I wanted the update function to take in variables for var_1, how would I do so?

For example, I want my function to be in the form:

def delete(var_1):

cur.execute(

"""DELETE FROM potluck

WHERE name = %s;""", (var_1))

However, just typing that didn't work.

In addition, how about in the case when:

def delete(name, var_1):

cur.execute(

"""DELETE FROM potluck

WHERE %s = %s;""", (name, var_1))

where I don't want "name" to have quotation marks when it is inserted into the string?

Any help would be appreciated!

解决方案

SOLVED:

I see what I was doing wrong. The only change I needed to make was add a comma after var_1, since:

"For positional variables binding, the second argument must always be a sequence, even if it contains a single variable. And remember that Python requires a comma to create a single element tuple".

For example:

def delete(var_1):

cur.execute(

"""DELETE FROM potluck

WHERE name = %s;""", (var_1,))

This works. I got the info from:

In the second case, then please reference the other answer below, which uses AsIs. That works. For example:

def delete(name, var_1):

cur.execute(

"""DELETE FROM potluck

WHERE %s = %s;""", (AsIs(name), var_1))

That does the trick. Thanks!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值