为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英546537 2021-11-30 16:52:45
我正在设置一个函数来添加新的数据行,这些数据将输入到我的数据库中的 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:
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

如果只是确定表的第一个数字,则可以使用字典将数字映射到表名称。


调用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)


查看完整回答
反对 回复 2021-11-30
  • 1 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信