Python Sqlite转义字符串选择列

时间:2016-02-20 14:37:41

标签: python sqlite

我正在尝试找到一种方法将值插入到我的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))

感谢您的帮助。

1 个答案:

答案 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,))

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