在cassandra python中如何在参数中传递表名

在cassandra python中如何在参数中传递表名,python,cassandra,Python,Cassandra,我想在Cassandra查询中使用一个变量作为我的表名 可以这样做: self.session.execute( """ INSERT INTO table_name (col1, col2) VALUES (%s, %s) """, ("1", "2") ) 但是,举个例子,我想做这样的事情 self.session.execute(

我想在Cassandra查询中使用一个变量作为我的表名

可以这样做:

self.session.execute(
            """
            INSERT INTO table_name (col1, col2)
            VALUES (%s, %s)
            """,
            ("1", "2")
        )
但是,举个例子,我想做这样的事情

self.session.execute(
            """
            INSERT INTO %s (col1, col2)
            VALUES (%s, %s)
            """,
            ("table_name","1", "2")
        )
这看起来是错误的方式

我当然想保证sql注入的安全性


谢谢

您需要使用准备好的查询而不是那种方法-当您使用
%s
占位符时,查询没有准备好,Cassandra每次解析您的查询都会增加额外的开销。如果使用类似的方法,最好避免这种情况——定义一个将保存准备好的查询的映射,并在代码中使用将准备不在此缓存中的查询的函数。代码如下所示(未测试):

然后在代码中:

 stmt = "select  * from %s.%s where id =?".format(ks, table)
 query = get_query(stmt)
 session.execute(query, [params])

有关更多详细信息,请参阅。

我的情况可以,但您确定注射的安全性吗?特别是这一行:stmt=“select*from%s.%s,其中id=?”。格式(ks,table)不,不确定-这只是一个示例:-)
 stmt = "select  * from %s.%s where id =?".format(ks, table)
 query = get_query(stmt)
 session.execute(query, [params])