如何在Python中将变量传递给SQL
我有一个python脚本,如下所示。它将接收参数,并在数据库中查询。但是,我不知道如何将变量如何在Python中将变量传递给SQL,python,Python,我有一个python脚本,如下所示。它将接收参数,并在数据库中查询。但是,我不知道如何将变量abcd传递给下面提到的SQL语句 abcd=sys.argv[3] cursor=db.cursor() cursor.execute(“从票据中选择计数(id)”,其中 状态为“已关闭”,版本为“abcd”,id为(%s)”%,。加入(票证)) 我尝试了%s的不同选项。但是所有抛出语法错误。您可以在 我认为这种方法将对您有所帮助: cursor = db.cursor() cursor.execu
abcd
传递给下面提到的SQL语句
abcd=sys.argv[3]
cursor=db.cursor()
cursor.execute(“从票据中选择计数(id)”,其中
状态为“已关闭”,版本为“abcd”,id为(%s)”%,。加入(票证))
我尝试了%s的不同选项。但是所有抛出语法错误。您可以在 我认为这种方法将对您有所帮助:
cursor = db.cursor()
cursor.execute("SELECT COUNT(id) FROM ticket WHERE status <> 'closed' AND version = 'abcd' AND id IN (%s)", [','.join(tickets)])
cursor=db.cursor()
cursor.execute(“从状态为“closed”且版本为“abcd”且id位于(%s)中的票据中选择计数(id)”,[,“.加入(票据)])
编辑2021:做你必须做的事,但不要遵循~7年前的建议。请参阅下面的评论。
我认为你需要得到正确的答案
试着这样做:
query = "SELECT count(id) FROM ticket WHERE version = %(version)s and id IN %(tpl)s" % {'version': 1, 'tpl': (1, 2, 3, 4)}
cursor.execute(query)
你能修正缩进错误吗?这段代码在函数中吗?请不要建议SQL查询使用字符串插值。这是一个巨大的安全问题,永远不应该被推荐。大多数库都有将参数作为参数化查询传入的方法。即使这在理论上是安全的,因为你没有使用用户生成的数据,这是一个不必要的风险,它的所有使用都应该有一个巨大的警告!没错。谢谢你指出这一点。我当时比现在更糊涂!
query = "SELECT count(id) FROM ticket WHERE version = %(version)s and id IN %(tpl)s" % {'version': 1, 'tpl': (1, 2, 3, 4)}
cursor.execute(query)