Как создать файл базы данных с помощью SQLAlchemy?

#python #flask #flask-sqlalchemy

#python #flask #flask-sqlalchemy

Вопрос:

Я пытаюсь составить простой список задач с помощью flask. Когда я запускаю команду from app import db для создания файла .db для базы данных, я получил сообщение об ошибке, в котором говорится, что модуль flask не установлен. Модуль установлен и работает, когда я пытаюсь запустить код без строк базы данных. Что я делаю не так?

Вот весь код и сообщение об ошибке: введите описание изображения здесь

Ответ №1:

Чтобы создать файл базы данных с помощью приведенного выше кода, вы можете импортировать db из app в приглашение python и вызвать db.create_all() функцию для создания файла базы данных, как показано ниже:

 >>> from app import db
>>> db.create_all()
 

И, пожалуйста, исправьте db.model db.Model , иначе вы получите сообщение об ошибке.

Комментарии:

1. Я использовал модель с заглавной буквы. Я пытался from app import db в своем приглашении python, которое выдавало мне сообщение об ошибке, в котором говорилось, что flask не установлен.

2. Вы пробовали повторно инициализировать свой venv.

3. Если какой-либо из вышеперечисленных шагов не работает, пожалуйста, обратитесь к моему второму ответу, который я опубликовал.

Ответ №2:

Если приведенные выше ответы не работают, вы можете добавить отдельный schema.sql файл, соответствующий моделям в вашем коде python, и попробовать создать файл базы данных, как показано ниже:

schema.sql:

 DROP TABLE IF EXISTS Todo;

CREATE TABLE Todo(
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            content TEXT NOT NULL,
            date_created DATE NOT NULL
);
 

А затем перейдите к своему терминалу в каталоге вашего проекта, активируйте свой venv и введите следующие команды:

 sqlite3 database.db < schema.sql
 

И ваш файл базы данных будет создан. Теперь вы можете подключить и использовать его как обычную базу данных из своего кода.И вам не нужно будет ничего устанавливать, поскольку sqlite3 уже поставляется с python.
Если по какой-либо причине sqlite3 не установлен, просто запустите любую из следующих команд:

 sudo apt-get install sqlite3 libsqlite3-dev