Всем добрый день!
Недавно изучаю Питон, решила попробовать разобраться с базами данных на примере встроенного SQLite3, для чего написала вот такой скрипт:
Идея была в том, чтобы создать ДБ, занести в неё данные и тут же проверить, как они считываются. Но на этапе попытки записать данные стандартный Python Shell выдаёт следующее со ссылкой на строку 27: sqlite3.OperationalError: no such table: Test
При этом в папке, откуда я запускаю скрипт, Test.db успешно создаётся, я её там вижу. Пробовала ещё раз указывать путь к папке перед sql-запросом, но это, ожидаемо, не помогло. os.path.exists файл тоже видит. Может, у меня создаётся файл без таблицы Test в нём? Но если да, то что я делаю не так при создании базы? Версия pip 20.01.01
Пробовала прописывать INSERT INTO Test.db - не помогает. Каким-то образом у меня получилось пару раз добиться того, чтобы всё заработало, но потом я решила прописать sql-запрос в отдельной переменной, увидев такой вариант на формуах, и теперь опять ничего не работает. Причём и при попытке убрать переменную sql и прописать запрос сразу в cursor.execute - тоже.
Насколько вообще sqlite3 нежный в плане синтаксиса запроса?
Недавно изучаю Питон, решила попробовать разобраться с базами данных на примере встроенного SQLite3, для чего написала вот такой скрипт:
import os
import sqlite3
a = int(5)
b = "абвгд"
way = os.getcwd()
print (way)
conn = sqlite3.connect("Test.db")
cursor = conn.cursor()
if "Test.db" not in os.listdir():
cursor.execute("CREATE TABLE Test (testint int(1), testvar varchar (10))")
conn.commit()
base = str(way)+"\Test.db"
if os.path.exists(base):
print("База найдена")
else:
print("Неверный путь")
sql = "INSERT INTO Test VALUES(?,?);"
cursor.execute(sql, (a, b))
conn.commit()
sql = "SELECT testvar FROM Test WHERE testint = 5 LIMIT 1"
cursor.execute(sql)
b = cursor.fetchall()
print(b)
import sqlite3
a = int(5)
b = "абвгд"
way = os.getcwd()
print (way)
conn = sqlite3.connect("Test.db")
cursor = conn.cursor()
if "Test.db" not in os.listdir():
cursor.execute("CREATE TABLE Test (testint int(1), testvar varchar (10))")
conn.commit()
base = str(way)+"\Test.db"
if os.path.exists(base):
print("База найдена")
else:
print("Неверный путь")
sql = "INSERT INTO Test VALUES(?,?);"
cursor.execute(sql, (a, b))
conn.commit()
sql = "SELECT testvar FROM Test WHERE testint = 5 LIMIT 1"
cursor.execute(sql)
b = cursor.fetchall()
print(b)
Идея была в том, чтобы создать ДБ, занести в неё данные и тут же проверить, как они считываются. Но на этапе попытки записать данные стандартный Python Shell выдаёт следующее со ссылкой на строку 27: sqlite3.OperationalError: no such table: Test
При этом в папке, откуда я запускаю скрипт, Test.db успешно создаётся, я её там вижу. Пробовала ещё раз указывать путь к папке перед sql-запросом, но это, ожидаемо, не помогло. os.path.exists файл тоже видит. Может, у меня создаётся файл без таблицы Test в нём? Но если да, то что я делаю не так при создании базы? Версия pip 20.01.01
Пробовала прописывать INSERT INTO Test.db - не помогает. Каким-то образом у меня получилось пару раз добиться того, чтобы всё заработало, но потом я решила прописать sql-запрос в отдельной переменной, увидев такой вариант на формуах, и теперь опять ничего не работает. Причём и при попытке убрать переменную sql и прописать запрос сразу в cursor.execute - тоже.
Насколько вообще sqlite3 нежный в плане синтаксиса запроса?
Последнее редактирование: