我一直在尝试解决如何几天内插入到SQL表中的问题。我没有尝试过任何方法,只是花了几个小时修复所有错误,才发现我又回到了插入语句不插入任何内容的开始。我只剩下几个小时了,在此问题解决之前,我无法做任何其他事情,谢谢。

我根本不明白哪里出了问题,也没有任何错误了。它只是打印出没有任何内容的表。我希望它打印出我所拥有的输入(它们在完整的代码中定义,并且我检查了它们是否可以工作并打印)

def insert_user():
    import sqlite3
    score = "0"
    db = sqlite3.connect("Database.db")
    cursor = db.cursor()
    sql = "INSERT INTO users (username,firstname, surname, age, password , score) VALUES (?,?,?,?,?,?)"
    db.execute(sql,(usernamei, first_name ,last_name , age, passwordi ,score))
    db.commit()
    result = cursor.fetchall()
    print()
    print("{0:<20} {1:<20} {2:<20} {3:<20} {4:<20} {5:<20}".format("userID","username","firstname","surname","age","password","score"))
    print("====================================================================================================")
    for each in result:
            print("{0:<20} {1:<20} {2:<20} {3:<20} {4:<20} {5:<20}".format(each[1],each[2],each[3],each[4],each[5],each[6]))


insert_user()

最佳答案

当您插入,删除,更新时,不使用游标。要从使用(执行)SELECT SQL的表中获取数据,游标将包含结果集。

所以你需要做插入,然后执行一个选择例如使用“ SELECT * FROM users”,然后使用result = cursor.fetchall()

而不是针对连接执行,而是针对游标执行。

诸如此类的东西(用于测试表并创建和使用硬编码值(显然会相应地进行调整)):-

def insert_user():
    import sqlite3
    score = "0"
    db = sqlite3.connect("Database.db")
    sql = "DROP TABLE IF EXISTS users"
    db.execute(sql)
    sql = "CREATE TABLE IF NOT EXISTS users (userID INTEGER PRIMARY KEY, username TEXT UNIQUE, firstname TEXT, surname TEXT, age INTEGER, password TEXT, score INTEGER)"
    db.execute(sql)
    result = db.cursor()
    sql = "INSERT INTO users (username,firstname, surname, age, password , score) VALUES (?,?,?,?,?,?)"
    db.execute(sql,("testusername", "testfirstname","testsurname" , 10, "password" ,score))
    db.commit()
    result.execute("SELECT * FROM users")

    print("{0:<20} {1:<20} {2:<20} {3:<20} {4:<20} {5:<20} {6:<20}".format("userID","username","firstname","surname","age","password","score"))
    print("====================================================================================================")
    for each in result:
            print("{0:<20} {1:<20} {2:<20} {3:<20} {4:<20} {5:<20} {6:20}".format(each[0],each[1],each[2],each[3],each[4],each[5],each[6]))
insert_user()


结果是 :-

E:\PYCharmPythonProjects\venv\Scripts\python.exe E:/PYCharmPythonProjects/Test001.py
userID               username             firstname            surname              age                  password             score

====================================================================================================
1                    testusername         testfirstname        testsurname          10                   password                     0

Process finished with exit code 0

关于python - 无论我尝试使用多少种不同的类型,insert语句都不会起作用。 Sqlite3 pyscripter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56021325/

10-14 11:05
查看更多