繁体   English   中英

将用户输入数据插入到 python 中的 sqlite3

[英]Inserting user input data into sqlite3 in python

我无法使用 python 将数据插入 sqlite3 数据库...请查看我编写的代码并告诉我程序中的所有缺陷..我是编程初学者..

我收到错误

btn = Button(text="Save", on_press=self.add_question(qst.text, ans.text))
 TypeError: add_question() takes 2 positional arguments but 3 were given
import sqlite3
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput


class qbApp(App):
    def build(self):
        layout = GridLayout(cols=2)
        lbl = Label(text="Question :")
        qst = TextInput()
        lbl1 = Label(text="Answer :")
        ans = TextInput()
        btn = Button(text="Save", on_press= add_question(qst.text, ans.text))

        layout.add_widget(lbl)
        layout.add_widget(qst)
        layout.add_widget(lbl1)
        layout.add_widget(ans)
        layout.add_widget(btn)

        return layout

    def add_question(qst, ans):
        conn = sqlite3.connect('KSFE.db')
        c = conn.cursor()
        sql = """INSERT INTO qb (question, answer) 
             VALUES (?,?);"""

        c.execute(sql, (qst, ans))
        print("Data added")

        conn.commit()
        conn.close()


if __name__ == '__main__':
    qbApp().run()

您可能希望将self传递给add_question或将其声明为 static 方法:

# option 1

    def add_question(self, qst, ans):
        pass


# option 2:

    @staticmethod
    def add_question(qst, ans):
        pass

此外,在您的代码片段中,您有一个小错误: on_press=self.add_question(qst.text, ans.text)

看一个例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM