Оператор вставки никогда не работает, независимо от того, сколько разных типов я пробую.Sqlite3 pyscripter - PullRequest
1 голос
/ 07 мая 2019

Я пытался решить, как вставить в таблицу 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()

1 Ответ

1 голос
/ 08 мая 2019

Когда вы ВСТАВЛЯЕТЕ, УДАЛЯЕТЕ, ОБНОВЛЯЕТЕ Курсор не используется.Чтобы получить данные из таблицы, которую вы используете (выполните) SELECT SQL, курсор будет содержать набор результатов.

Таким образом, вам нужно выполнить INSERTS и затем выполнить SELECT, например, с помощью «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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...