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])
这种方法还有助于转义绑定变量中的任何奇数字符或标点符号。