亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Sqlite3 表 users 有 7 列,但提供了 6 個值

Sqlite3 表 users 有 7 列,但提供了 6 個值

12345678_0001 2023-06-27 13:47:46
請我是 python 和 sqlite3 的新手,我試圖找到注冊表單無法提交的可能原因,它一直給我一個錯誤。并且提供的值不斷倒計時c.execute("INSERT INTO users VALUES (?, ?, ?, ?, ?, ?)", (element)) sqlite3.OperationalError:表 users 有 7 列,但提供了 6 個值  # Importing Tkinter framework            fr        om tkinter import *        from tkinter import ttk        # Import sqlite3        import sqlite3                        def setup_db():            # Open db            global conn            conn = sqlite3.connect('shengen.db')            # Create a cursor            global c            c = conn.cursor()                    # Create the table if it doesn't exist            try:                c.execute("""CREATE TABLE if not exists users(                    ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,                    fname TEXT NOT NULL,                    email TEXT NOT NULL,                    password TEXT NOT NULL,                    cPassword TEXT NOT NULL,                    sex INTEGER NOT NULL,                    country TEXT NOT NULL                    );""")                        conn.commit()                    except sqlite3.OperationalError:                print("ERROR: Table not Created")                        def reg_submit():            # Insert record into the db            new_user = [fname.get(), email.get(), password.get(),                        cPassword.get(), sex.get(), country.get()]                    for element in new_user:                c.execute("INSERT INTO users VALUES (?, ?, ?, ?, ?, ?)", (element))                    conn.commit()            c.close()            conn.close()                        def register():            root1 = Toplevel(root)            root1.geometry("900x700")            root1.title("Registration Page")            root1.iconbitmap("")                    global fname            global email            global password            global cPassword            global sex            global sex1            global country
查看完整描述

3 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

我實際上認為不要循環遍歷列表,只需執行以下操作:

values = fname.get(), email.get(), password.get(),cPassword.get(), sex.get(), country.get()
c.execute("INSERT INTO users(fname,email,password,cPassword,sex,country) VALUES (?, ?, ?, ?, ?, ?)", values)
c.execute('commit')

我在這里所做的只是指定要插入哪一列,而您的表有 7 列(包括 )但只給出了 6 個值這一事實oid可能就是問題所在。我沒有循環,因為我相信 @balderman 說這個問題被調用了INSERT6 次。

讓我知道這是否修復了錯誤


查看完整回答
反對 回復 2023-06-27
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

下面的循環是錯誤的 - 在此循環中您調用了 INSERT 6 次。

每次使用 1 個字符串(姓名、電子郵件、..)。

您需要調用一次 INSERT 并用作new_user第二個參數c.execute

new_user = [fname.get(), email.get(), password.get(),
                        cPassword.get(), sex.get(), country.get()]        
for element in new_user:
     c.execute("INSERT INTO users VALUES (?, ?, ?, ?, ?, ?)", (element))


查看完整回答
反對 回復 2023-06-27
?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

如果您不提供所有列(此處不提供 ID),則應在值之前指定列名稱:

INSERT INTO users (column1,column2 ,..) VALUES( value1, value2 ,...);


查看完整回答
反對 回復 2023-06-27
  • 3 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號