Почему я получаю сообщение об ошибке нет такого названия столбца - PullRequest
0 голосов
/ 08 ноября 2019

Я пишу программу для хранения значений кредитных карт на практике. Я продолжаю получать сообщение об ошибке "sqlite3.OperationalError: такого столбца нет: таблица создана, а столбец: имя. Имя столбца существует в таблице карточек в cc.db в SQLiteStudio, любая помощь приветствуется.

import sqlite3
conn = sqlite3.connect('cc.db')
c = conn.cursor()

def createTABLE():
    c.execute("""CREATE TABLE IF NOT EXISTS cards (                          
                       name text,
                       ccnumber integer,
                       exp_date text,
                       csv integer
                        )""")                 
conn.commit()
print('table created')


def entercard():
    ccname = input('Enter the name of the new card: ')
    ccnumber = input('Enter the card number: ')
    ccexp_date = input('Enter the Expiration date: ')
    cccsv = input('Enter the CSV number from the back of the card: ')
    c.execute("INSERT INTO cards VALUES (?, ?, ?, ?),(name, ccnumber, exp_date, csv)");
    conn.commit()


def printall():
    for card in c.execute('SELECT * FROM cards'):
        print(card)

createTABLE()
entercard()
printall()

conn.close()

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

Я не могу определить, почему вы получаете именно эту ошибку, но у вас есть проблема со следующей строкой:

c.execute("INSERT INTO cards VALUES (?, ?, ?, ?),(name, ccnumber, exp_date, csv)");

Это все строка. Вместо этого вам нужно отделить переменные от строки запроса следующим образом:

c.execute("INSERT INTO cards VALUES (?, ?, ?, ?)",(name, ccnumber, exp_date, csv))
0 голосов
/ 08 ноября 2019

Я сделал ниже, чтобы сохранить значения и извлечь их из таблицы. Вам нужно, чтобы линия выглядела примерно так:

    c.execute("INSERT INTO cards(name,ccnumber,exp_date,csv) VALUES ('Tom','new1','new2','new3');")

Пробел

import sqlite3
conn = sqlite3.connect('cc.db')
c = conn.cursor()

def createTABLE():
    c.execute("""CREATE TABLE IF NOT EXISTS cards (                                                                                                                                          
                   name text,                       
                   ccnumber integer,
                   exp_date text,
                   csv integer)""")
conn.commit()
c.execute("INSERT INTO cards(name) VALUES ('Tom');")
conn.commit()
p=c.execute('SELECT * FROM cards')
j= p.fetchall()
print(j)
for i in j:
    print(i)
print(p)
print('table created')
def entercard():
    ccname = input('Enter the name of the new card: ')
    c.execute("INSERT INTO cards(name) VALUES ('"+ccname+"')")
    conn.commit()
def printall():
    for card in c.execute('SELECT * FROM cards'):
        print(card)
createTABLE()
entercard()
printall()
conn.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...