Как вставить динамические данные в sqlite3 с помощью Python - PullRequest
0 голосов
/ 01 июля 2019
enter code here

import sqlite3

conn = sqlite3.connect('tutorial.db')
c = conn.cursor()

def create_table():
c.execute("CREATE TABLE example(Language VARCHAR, Version REAL, Skill 
TEXT)")

def enter_data():
c.execute("INSERT INTO example VALUES('Python', 2.7, 'Beginner')")
c.execute("INSERT INTO example VALUES('Python', 3.3, 'Intermediate')")
c.execute("INSERT INTO example VALUES('Python', 3.4, 'Expert')")
conn.commit()

def enter_dynamic_data():
lang = input("What language? ")
version = float(input("What version? "))
skill = input("What skill level? ")

c.execute("INSERT INTO example (Language, Version, Skill) VALUES (?, ?, ?)", 
(lang, version, skill))

conn.commit()


enter_dynamic_data()

conn.close()

Traceback (последний последний вызов):

 File "C:\Users\karti\Desktop\sqlite3\0304 -  inserting dynamic data.py", line 25, in <module>
    enter_dynamic_data()
  File "C:\Users\karti\Desktop\sqlite3\0304 -  inserting dynamic data.py", line 20, in enter_dynamic_data
    c.execute("INSERT INTO example (Language, Version, Skill) VALUES (?, ?, ?)", (lang, version, skill))
sqlite3.OperationalError: no such table: example

как устранить эту ошибку?

1 Ответ

0 голосов
/ 01 июля 2019

Сообщение указывает, что таблица пример не существует.Вы, кажется, не звоните create_table (или enter_data )

Попробуйте использовать: -

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


def create_table():
    c.execute("CREATE TABLE IF NOT EXISTS example(Language VARCHAR, Version REAL, Skill TEXT)") #<<<<<<<<<< CHANGED


def enter_data():
    c.execute("INSERT INTO example VALUES('Python', 2.7, 'Beginner')")


create_table() #<<<<<<<<<< ADDED
enter_data() #<<<<<<<<<< ADDED
c.execute("INSERT INTO example VALUES('Python', 3.3, 'Intermediate')")
c.execute("INSERT INTO example VALUES('Python', 3.4, 'Expert')")
conn.commit()


def enter_dynamic_data():
    lang = input("What language? ")
    version = float(input("What version? "))
    skill = input("What skill level? ")
    c.execute("INSERT INTO example (Language, Version, Skill) VALUES (?, ?, ?)",
          (lang, version, skill))
    conn.commit()
enter_dynamic_data()

cursor = c.connection.cursor() #<<<<<<<<<< ADDED
cursor.execute("SELECT * FROM example") #<<<<<<<<<< ADDED
for row in cursor: #<<<<<<<<<< ADDED
    print("Language=", row[0], " Version=", row[1], " Skill=", row[2]) #<<<<<<<<<< ADDED

conn.close()

Вышеуказанное приводит к: -

What language? Basic
What version? 3
What skill level? Easy
Language= Python  Version= 2.7  Skill= Beginner
Language= Python  Version= 3.3  Skill= Intermediate
Language= Python  Version= 3.4  Skill= Expert
Language= Basic  Version= 3.0  Skill= Easy

Process finished with exit code 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...