«Нет такой таблицы: Спорт» при экспорте таблицы из sqlite db (представление django)

В моем представлении django после обновления таблицы я помещаю этот код для экспорта этой таблицы в файл csv:

import sqlite3 as sql
import os
import csv

# export Data
print ("Export data into csv file..............")
conn = sql.connect('sqlite3.db') #  I tried: db.sqlite3 -> same
cursor=conn.cursor()
cursor.execute("select * from Sport")
with open("heartrateai_data.csv", "w") as csv_file:
     csv_writer = csv.writer(csv_file, delimiter = "\t")
     csv_writer.writerow([i[0] for i in cursor.description])
     csv_writer.writerows(cursor)
dirpath = os.getcwdb()+"/heartrateai_data.csv"
print("Data exported Successfully into {}".format(dirpath))
conn.close()

Но выдает ошибку: Значение исключения: нет такой таблицы: Спорт. Я уверен, что имя таблицы правильное, потому что оно такое же в моем model.py.

Я не уверен, исправит ли он строку с соединением и закрытием соединения. Я новичок в этом. Мой браузер: «Нет такой таблицы: Спорт» при экспорте таблицы из sqlite db (представление django)

Редактировать 2: Я увидел, что правильный способ записи пути — это 'E:\...' или r'E:...'. Я написал так в своем коде conn = sql.connect(r'E:\Work\django\analysisData\db.sqlite3'), но у меня такая же ошибка. "Нет такой таблицы: Спорт"

Чтобы было ясно: это БД, хранящаяся в файле с именем «sqlite3.db» в той же папке, что и скрипт? А sql — это псевдоним пакета sqlite3?

user2246849 04.05.2022 08:19

Да, я редактирую пост и пишу строки для импорта. И по первому вопросу: БД у меня есть в большом проекте, а не в той папке, в которой я пишу этот код. (Прикрепил картинку с тем, что у меня в браузере. Код прописан в csvFile/view.py). Я знаю, что это не одно и то же имя в коде с именем БД из браузера. Я попробовал оба, чтобы убедиться, что я не написал что-то плохое.

AndreeaA 04.05.2022 08:29

Проблема в том, что sqlite3 не сработает, если база данных, к которой вы подключаетесь, не существует. Он просто создает файл. Если вы перейдете по пути сценария, вы, вероятно, найдете те, которые он создал. Я считаю, что вы должны указать правильный путь к нему, что-то вроде ../../db.sqlite3 (в зависимости от того, где хранится база данных по отношению к представлению Django). Может быть, показать полную структуру папок как со сценарием, так и с БД.

user2246849 04.05.2022 08:37

Если я пишу: conn = sql.connect('E:\Work\django\analysisData\db.sqlite3'), выдает ошибку: Невозможно открыть файл базы данных. И если я поставлю: conn = sql.connect('E:/Work/django/analysisData/db.sqlite3') -> нет такой таблицы: Спорт

AndreeaA 04.05.2022 08:52

Я считаю, что есть проблема с разрешением, т.е. у sqlite3 нет разрешения на чтение/запись файла. См. также здесь

user2246849 04.05.2022 08:59
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
5
29
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуй это

python manage.py makemigrations

python manage.py migrate

это может быть просто ошибка Джанго

Я сделал это. Я удаляю все свои миграции, все, я писал эти команды, но ничего не изменилось.

AndreeaA 04.05.2022 17:16

Как сейчас написано, ваш ответ неясен. Пожалуйста, редактировать, чтобы добавить дополнительную информацию, которая поможет другим понять, как это относится к заданному вопросу. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.

Community 05.05.2022 12:14
Ответ принят как подходящий

После того, как я написал эти строки в своем коде:

con = sql.connect(r'E:\Work\django\analysisData\db.sqlite3')
cursor = con.cursor()
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
print(cursor.fetchall())

Я увидел, что имя таблицы не такое, как в model.py. Имя таблиц: имя_проекта_ИмяТаблицы. Я изменил имя таблицы, и у меня больше нет этой ошибки.

Другие вопросы по теме