【问题标题】:I am trying to pass parameters in cassandra query but I am getting error using python我正在尝试在 cassandra 查询中传递参数,但使用 python 时出现错误
【发布时间】:2021-12-12 11:55:49
【问题描述】:
 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})

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

回溯(最近一次通话最后一次):
文件“e:/workspace/library_mangement_application/main.py”,第 40 行,在
删除数据()
文件“e:/workspace/library_mangement_application/main.py”,第 35 行,在 delete_data
session.execute(delete,{'column':column_name,'i_d':id})
文件“cassandra\cluster.py”,第 2618 行,在 cassandra.cluster.Session.execute
文件“cassandra\cluster.py”,第 4894 行,在 cassandra.cluster.ResponseFuture.result
cassandra.protocol.SyntaxException:

【问题讨论】:

    标签: python database cassandra nosql


    【解决方案1】:

    所以 Python 字符串格式化不是在 CQL 中注入变量的好方法。话虽如此,使用列名并非不可能。所以你可以这样做:

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

    然后根据deleteCQL创建一个prepared statement,然后在查询执行时绑定idnum

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      • 2021-08-05
      • 2014-08-24
      • 1970-01-01
      • 2021-09-05
      • 2019-11-03
      相关资源
      最近更新 更多