Python Sqlite转义字符串选择列
我试图找到一种方法,在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
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
?再次感谢你的帮助。