我正在尝试找到一种方法将值插入到我的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))
感谢您的帮助。
答案 0 :(得分:1)
您无法参数化列名或表名。您必须使用字符串格式:
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,))
确保您信任源,或在插入查询之前验证列名。