SQLITE3 - 如何根据输入的数据自动检测数据库中的表?

我正在设置一个函数来添加新的数据行,这些数据将输入到我的数据库中的 8 个“材料表”之一。


def Add_New(self):

    pref = self.adding.addcode_text.text()

    grade = self.adding.addgrade_text.text()

    desc = self.adding.adddesc_text.text()

    supp = self.adding.addsupp_text.text()

    try:

        c.execute('INSERT INTO ***auto detected table*** (prefix,grade,desc1,supplier)VALUES(?,?,?,?)',(pref,grade,desc,supp))

        conn.commit()

        print('DONE')

        self.Load_***Auto detected***Db()

    except Exception as error:

        print(error)

我不确定如何让它根据“Pref”的用户条目自动检测将新数据行放入哪个表中。Pref 是唯一的 3 位数代码。每个表都有一个分配的值范围......即表 1 的 3 位代码都以“1”开头。表 2 3 位代码均以“2”等开头。


我需要一个 if 语句来处理这个问题吗?如果第一个数字是 1 那么选择数据库中的表 1 来存储它?或者我可以通过让它识别当前小部件及其指向的内容将其指向正确的表格吗?


我会将功能分配给一个按钮来触发事件。


为新手问题道歉,这是我编程的第一周,真的可以使用你们提供的任何帮助。


材料数据库返回tablewidgets:

http://img4.mukewang.com/61a5e67200019cd508060562.jpg

慕桂英546537
浏览 205回答 1
1回答

牛魔王的故事

如果只是确定表的第一个数字,则可以使用字典将数字映射到表名称。调用Load_XXXDb()方法时,可以使用getattr()动态获取属性。def Add_New(self):    pref = self.adding.addcode_text.text()    grade = self.adding.addgrade_text.text()    desc = self.adding.adddesc_text.text()    supp = self.adding.addsupp_text.text()    tables = {"1": "Stainless", "2": "Steel", "3": "Aluminum", ...}    table = tables[pref[0]]    try:        c.execute('INSERT INTO ' + table + ' (prefix,grade,desc1,supplier)VALUES(?,?,?,?)',(pref,grade,desc,supp))        conn.commit()        print('DONE')        getattr(self, 'Load_' + table + 'Db')()    except Exception as error:        print(error)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python