我试图在cassandra查询传递参数,但我使用python得到错误


user_input== "b":
id = input("Enter id of  your book")  
idnum=int(id)
column_name = input("Enter column name")
delete= "delete %(column)s from books where book_id=%(i_d)s"
session.execute(delete,{'column':column_name,'i_d':id})

在执行此代码时出现以下错误

追溯(最近一次调用):
File "e:/workspace/library_mangement_application/main.py",第40行,在
delete_data()
File "e:/workspace/library_mangement_application/main.py",第35行,在delete_data
session.execute(delete,{'column':column_name,'i_d':id})
File "cassandracluster.py",第2618行,在cassandra.cluster. session。执行
File "cassandracluster.py",行4894,在cassandra.cluster. responsefuture。结果
cassandra.protocol。SyntaxException:

所以Python字符串格式化不是在CQL中注入变量的好方法。也就是说,使用列名也不是不可能。所以你可以这样做:

deleteCQL= "delete %s from books where book_id=?" % column_name

然后创建一个基于deleteCQL的准备语句,然后在查询执行时绑定idnum

pStatement = session.prepare(deleteCQL)
session.execute(pStatement,[idnum])

这种方法还有助于转义绑定变量中的任何奇数字符或标点符号。

相关内容

  • 没有找到相关文章

最新更新