Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Sqlite转义字符串选择列_Python_Sqlite - Fatal编程技术网

Python Sqlite转义字符串选择列

Python Sqlite转义字符串选择列,python,sqlite,Python,Sqlite,我试图找到一种方法,在Sqlite查询中插入一个值来选择列 我现在工作的是 def ChangeItemQuantity(self, item_name, incrament_quantity): try: # Change given item quantity in database self.c.execute(''' SELECT quantity FROM items

我试图找到一种方法,在Sqlite查询中插入一个值来选择列

我现在工作的是

def ChangeItemQuantity(self, item_name, incrament_quantity):
    try:
        # Change given item quantity in database
        self.c.execute('''
             SELECT quantity
             FROM items
             WHERE itemName=?
             ''',(item_name,))
        current_quantity = self.c.fetchone()
        new_quantity = current_quantity[0] + incrament_quantity
        self.c.execute('''
             UPDATE items
             SET quantity = ?
             WHERE itemName=?
             ''',(new_quantity, item_name))
        self.conn.commit()
这适用于更改
quantity
列中的值,但我想再次使用此方法更改另一列中的值,
alertLevel

所以我想输入列名,类似这样的内容

def ChangeItemQuantity(self, column_name, item_name, incrament_quantity):
    try:
        self.c.execute('''
             SELECT ?
             FROM items
             WHERE itemName=?
             ''',(column_name, item_name))
我也试过

        self.c.execute('''
             SELECT {}
             FROM items
             WHERE itemName={}
             '''.format(column_name, item_name))
谢谢你的帮助

无法参数化列或表名。您必须使用字符串格式:

def ChangeItemQuantity(self, column_name, item_name, incrament_quantity):
    try:
        self.c.execute('''
             SELECT {column_name}
             FROM items
             WHERE itemName=?
             '''.format(column_name=column_name), (item_name,))

在插入查询之前,请确保您信任您的源代码,或者验证列名。

很抱歉造成混淆,但这与我尝试的
.format
有什么不同?@JohnBoy它是不同的。您必须对列名或表名使用格式,但查询的其余部分仍应参数化。好的,谢谢!此处使用的
.format()
是否易受SQL注入攻击?@JohnBoy确切地说,您必须验证/转义列名。所谓验证,是指
column\u name=column\u name
?再次感谢你的帮助。