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