使用3个参数更新Python Sqlite

使用3个参数更新Python Sqlite,python,Python,晚上好。我有一个相当基本的python应用程序,它将sqlite数据库加载到gui中,并提供用户crud功能 我的添加和删除功能工作正常,但我正在努力查询更新而没有问题 我需要用3个变量制作这个update语句 self.tempColumn:要更新的所需列的名称 cheese\u id:要更新的记录的id 值:用于更新字段的值 我已经打印出了所有3个值,它们返回了我所期望的结果,但是我无法在不崩溃的情况下运行更新查询 def run_query(self, query, paramet

晚上好。我有一个相当基本的python应用程序,它将sqlite数据库加载到gui中,并提供用户crud功能

我的添加和删除功能工作正常,但我正在努力查询更新而没有问题

我需要用3个变量制作这个update语句 self.tempColumn:要更新的所需列的名称 cheese\u id:要更新的记录的id :用于更新字段的值

我已经打印出了所有3个值,它们返回了我所期望的结果,但是我无法在不崩溃的情况下运行更新查询

    def run_query(self, query, parameters=()):
    with sqlite3.connect(self.db_name) as conn:
        cursor = conn.cursor()
        result = cursor.execute(query, parameters)
        conn.commit()
        return result



    def delete_record(self, cheese_id):

    query = 'DELETE FROM ' + self.working_table + " where CheeseId=" + cheese_id
    self.run_query(query, )
删除记录作品

    def add_record(self, cheese_id, cheese_name_en, manufacturer_name_en,
               manufacturer_prov_code, manufacturing_type_en, website_en,
               fat_content_percent, moisture_percent, particularities_en, flavour_en,
               characteristics_en, ripening_en, organic, category_type_en,
               milk_type_en, milk_treatment_type_en, rind_type_en,
               last_update_date):
    print(cheese_id)

    sql_insert_query = '''INSERT INTO cheeseData(CheeseId, CheeseNameEn, ManufacturerNameEn,
                     ManufacturerProvCode, ManufacturingTypeEn, WebSiteEn,
                     FatContentPercent, MoisturePercent, ParticularitiesEn, FlavourEn,
                     CharacteristicsEn, RipeningEn, Organic, CategoryTypeEn,
                     MilkTypeEn, MilkTreatmentTypeEn, RindTypeEn,
                     LastUpdateDate)VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'''

    parameters = (cheese_id, cheese_name_en, manufacturer_name_en,
                  manufacturer_prov_code, manufacturing_type_en, website_en,
                  fat_content_percent, moisture_percent, particularities_en, flavour_en,
                  characteristics_en, ripening_en, organic, category_type_en,
                  milk_type_en, milk_treatment_type_en, rind_type_en,
                  last_update_date)
    print("about to run query add in datacess")

    self.run_query(sql_insert_query, parameters)
    print("query succcessful")
    def edit_record(self, cheese_id, value):
    if column == 0:
        self.tempColumn = "CheeseId"
    elif column == 1:
        self.tempColumn = "CheeseNameEn"
    elif column == 2:
        self.tempColumn = "ManufacturerNameEn"
    elif column == 3:
        self.tempColumn = "ManufacturerProvCode"
    elif column == 4:
        self.tempColumn = "ManufacturingTypeEn"
    elif column == 5:
        self.tempColumn = "WebSiteEn"
    elif column == 6:
        self.tempColumn = "FatContentPercent"
    elif column == 7:
        self.tempColumn = "MoisturePercent"
    elif column == 8:
        self.tempColumn = "ParticularitiesEn"
    elif column == 9:
        self.tempColumn = "FlavourEn"
    elif column == 10:
        self.tempColumn = "CharacteristicsEn"
    elif column == 11:
        self.tempColumn = "RipeningEn"
    elif column == 12:
        self.tempColumn = "Organic"
    elif column == 13:
        self.tempColumn = "CategoryTypeEn"
    elif column == 14:
        self.tempColumn = "MilkTypeEn"
    elif column == 15:
        self.tempColumn = "MilkTreatmentTypeEn"
    elif column == 16:
        self.tempColumn = "RindTypeEn"
    elif column == 17:
        self.tempColumn = "LastUpdateDateEn"
    print(self.tempColumn)
    conn = sqlite3.connect('canadianCheeseDirectory')
    cursor = conn.cursor()
    cursor.execute("UPDATE cheeseData SET " + self.tempColumn + ' = ' + value + " WHERE CheeseId=" + cheese_id)
增加唱片作品

    def add_record(self, cheese_id, cheese_name_en, manufacturer_name_en,
               manufacturer_prov_code, manufacturing_type_en, website_en,
               fat_content_percent, moisture_percent, particularities_en, flavour_en,
               characteristics_en, ripening_en, organic, category_type_en,
               milk_type_en, milk_treatment_type_en, rind_type_en,
               last_update_date):
    print(cheese_id)

    sql_insert_query = '''INSERT INTO cheeseData(CheeseId, CheeseNameEn, ManufacturerNameEn,
                     ManufacturerProvCode, ManufacturingTypeEn, WebSiteEn,
                     FatContentPercent, MoisturePercent, ParticularitiesEn, FlavourEn,
                     CharacteristicsEn, RipeningEn, Organic, CategoryTypeEn,
                     MilkTypeEn, MilkTreatmentTypeEn, RindTypeEn,
                     LastUpdateDate)VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'''

    parameters = (cheese_id, cheese_name_en, manufacturer_name_en,
                  manufacturer_prov_code, manufacturing_type_en, website_en,
                  fat_content_percent, moisture_percent, particularities_en, flavour_en,
                  characteristics_en, ripening_en, organic, category_type_en,
                  milk_type_en, milk_treatment_type_en, rind_type_en,
                  last_update_date)
    print("about to run query add in datacess")

    self.run_query(sql_insert_query, parameters)
    print("query succcessful")
    def edit_record(self, cheese_id, value):
    if column == 0:
        self.tempColumn = "CheeseId"
    elif column == 1:
        self.tempColumn = "CheeseNameEn"
    elif column == 2:
        self.tempColumn = "ManufacturerNameEn"
    elif column == 3:
        self.tempColumn = "ManufacturerProvCode"
    elif column == 4:
        self.tempColumn = "ManufacturingTypeEn"
    elif column == 5:
        self.tempColumn = "WebSiteEn"
    elif column == 6:
        self.tempColumn = "FatContentPercent"
    elif column == 7:
        self.tempColumn = "MoisturePercent"
    elif column == 8:
        self.tempColumn = "ParticularitiesEn"
    elif column == 9:
        self.tempColumn = "FlavourEn"
    elif column == 10:
        self.tempColumn = "CharacteristicsEn"
    elif column == 11:
        self.tempColumn = "RipeningEn"
    elif column == 12:
        self.tempColumn = "Organic"
    elif column == 13:
        self.tempColumn = "CategoryTypeEn"
    elif column == 14:
        self.tempColumn = "MilkTypeEn"
    elif column == 15:
        self.tempColumn = "MilkTreatmentTypeEn"
    elif column == 16:
        self.tempColumn = "RindTypeEn"
    elif column == 17:
        self.tempColumn = "LastUpdateDateEn"
    print(self.tempColumn)
    conn = sqlite3.connect('canadianCheeseDirectory')
    cursor = conn.cursor()
    cursor.execute("UPDATE cheeseData SET " + self.tempColumn + ' = ' + value + " WHERE CheeseId=" + cheese_id)
这不起作用:(

我尝试过很多形式,但都没有用,包括

self.run_query(
        """UPDATE cheeseData SET {}=? WHERE CheeseId = ?""".format(self.tempColumn),
        (value, cheese_id), )




self.run_query('UPDATE cheeseData set %s=%s WHERE CheeseId = $s'(self.tempColumn, value, cheese_id))
self.run_query('UPDATE cheeseData set %s=? WHERE CheeseId = ?VALUES(?,?)'.format(self.tempColumn)value, cheeseid)
我意识到为查询连接字符串是不好的做法,但这是本地sqlite db文件上的一个简单应用程序,我只是尝试提供一个gui crud


任何帮助都将不胜感激。

对于调试,请将
UPDATE
语句转换成一个字符串,并在控制台上打印出来,以查看它是否正常。同时尝试在SqlLite命令行中运行相同的命令,看看是否有错误。谢谢@anuragal,这是一个令人难以置信的建议。我成功地打印了该语句,直到它恢复正常似乎很合适,但不适用于
query=“”更新集合{}={},其中CheeseId={}”“。格式(self.tempColumn,value,cheese_id)
好消息:-)