Python和Sqlite3,连接传递的字符串
下面是对我的问题的概括Python和Sqlite3,连接传递的字符串,python,sqlite,Python,Sqlite,下面是对我的问题的概括 Col_Index = 'Foo' data = SQLfunctions.fetchSQL("SELECT Col_" + Col_Index + "FROM MyTable) 其中fetchSQL是一个返回SQL语句值的函数。我试图重新编写它,以便使用?传递列索引,并连接字符串,即 data = SQLfunctions.fetchSQL("SELECT Col_ || ? FROM MyTable", [Col_Index]) 但这不起作用,因为它似乎没有用?执
Col_Index = 'Foo'
data = SQLfunctions.fetchSQL("SELECT Col_" + Col_Index + "FROM MyTable)
其中fetchSQL
是一个返回SQL语句值的函数。我试图重新编写它,以便使用?
传递列索引
,并连接字符串,即
data = SQLfunctions.fetchSQL("SELECT Col_ || ? FROM MyTable", [Col_Index])
但这不起作用,因为它似乎没有用?
执行|
(类似列列列的错误不存在
)
如何更改此参数以使其工作?您不能将SQL参数用于值以外的任何对象 您不能将它们用于表名、列、SQL函数或SQL语法的任何其他部分,正是因为它们是为防止这种使用而设计的 换句话说,如果SQL参数可以用来生成SQL代码(包括对象名),那么它们的一个主要用途就是:防止SQL注入攻击 恐怕您一直在生成查询的这一部分 对用户提供的数据一定要非常小心,不要从外部来源获取
Col\u Index
,除非对其进行消毒和/或严格限制其可容纳的值的范围
您可以查看如何为自己生成SQL,因为它可以确保任何对象名称也正确转义:
from sqlalchemy.sql import table, literal_column, select
tbl = table('MyTable')
column = literal_column('Col_' + Col_Index)
session.execute(select([column], '', [tbl]))
不能对值以外的任何对象使用SQL参数 您不能将它们用于表名、列、SQL函数或SQL语法的任何其他部分,正是因为它们是为防止这种使用而设计的 换句话说,如果SQL参数可以用来生成SQL代码(包括对象名),那么它们的一个主要用途就是:防止SQL注入攻击 恐怕您一直在生成查询的这一部分 对用户提供的数据一定要非常小心,不要从外部来源获取
Col\u Index
,除非对其进行消毒和/或严格限制其可容纳的值的范围
您可以查看如何为自己生成SQL,因为它可以确保任何对象名称也正确转义:
from sqlalchemy.sql import table, literal_column, select
tbl = table('MyTable')
column = literal_column('Col_' + Col_Index)
session.execute(select([column], '', [tbl]))