Tôi đang sử dụng bình, sqlalchemy, sqlite và python cho ứng dụng của mình. Khi tôi chạy db init để tạo cơ sở dữ liệu, tôi muốn một số giá trị mặc định đã được thêm vào cơ sở dữ liệu. Tôi đã thử hai điều này để thêm các hồ sơ vào bảng. Một phương pháp là sử dụng 'sự kiện'.
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()
Khi tôi chạy
python manage_db.py db init,
python manage_db.py db migrate,
python manage_db.py db upgrade
Tôi không nhận được bất kỳ vấn đề nào nhưng hồ sơ không được tạo.
Phương pháp khác mà tôi đã thử là, trong các mô hình, tôi đã đưa vào
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)
Mã mô hình lớp:
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}')"
Khi tôi chạy python Manage_db.py db init, tôi gặp lỗi Student_status, không có bảng nào như vậy.
Ai đó có thể giúp tôi làm thế nào để thêm các giá trị mặc định vào bảng student_status khi tôi chạy db init không?
Tôi cũng đã thử với máy gieo hạt. Tôi đã cài đặt seeder nd, thêm một tập tin mới gọi là seed.py và tôi đã chạy chạy seed seed
Hạt giống của tôi trông như thế này
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)
Tôi đã chạy db init, db di chuyển và nâng cấp db. Tôi không nhận được bất kỳ vấn đề. Khi tôi chạy hạt giống chạy, tôi gặp lỗi này
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
Tôi đã googled nó và tôi đã thử xuất 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.