Я использую flask, sqlalchemy, sqlite и python для моего приложения. Когда я запускаю db init для создания базы данных, я хочу, чтобы в базу данных был добавлен некоторый набор значений по умолчанию. Я попробовал эти две вещи, чтобы добавить записи в таблицу. Один метод использует 'event'.
from sqlalchemy.event import listen
from sqlalchemy import event, DDL
@event.listens_for(studentStatus.__table__, 'after_create')
def insert_initial_values(*args, **kwargs):
db.session.add(studentStatus(status_name='Waiting on admission'))
db.session.add(studentStatus(status_name='Waiting on student'))
db.session.add(studentStatus(status_name='Interaction Initiated'))
db.session.commit()
Когда я запускаю
python manage_db.py db init,
python manage_db.py db migrate,
python manage_db.py db upgrade
У меня не было проблем, но записи не создаются.
Другой Метод, который я попробовал, в models.py, который я включил
record_for_student_status = studentStatus(status_name="Waiting on student")
db.session.add(record_for_student_status)
db.session.commit()
print(record_for_student_status)
Код модели класса:
class StudentStatus(db.Model):
status_id = db.Column(db.Integer,primary_key=True)
status_name = db.Column(db.String)
def __repr__(self):
return f"studentStatus('{self.status_id}','{self.status_name}')"
Когда я запускаю python manage_db.py db init, я получая ошибку Student_status, такой таблицы нет.
Может кто-нибудь помочь мне, как добавить значения по умолчанию в таблицу student_status, когда я запускаю db init?
Я пробовал с flask также Я установил flask seeder и добавил один новый файл под названием seed.py, и я запустил flask seed seed
Мой seed.py выглядит так
class studentStatus(db.Model):
def __init__(self, status_id=None, status_name=None):
self.status_id = db.Column(db.Integer,primary_key=True)
self.status_name = db.Column(db.String,status_name)
def __str__(self):
return "ID=%d, Name=%s" % (self.status_id, self.status_name)
class DemoSeeder(Seeder):
# run() will be called by Flask-Seeder
def run(self):
# Create a new Faker and tell it how to create User objects
faker = Faker(
cls=studentStatus,
init={
"status_id": 1,
"name": "Waiting on Admission"
}
)
# Create 5 users
for user in faker.create(5):
print("Adding user: %s" % user)
self.db.session.add(user)
Я запустил db инициализация, перенос базы данных и обновление базы данных. Я не получил никаких проблем. Когда я запускаю flask seed run, я получаю эту ошибку
Error: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not found in the current directory
Я погуглил ее и попытался экспортировать FLASK_APP = seed.py
Then I ran the flask seed run ,I am getting an error ``` error could not import seeds.py```
Please help me in this.
What I need finally is when I do db initialization for the first time some default value have to be added to the database.