Ich verwende Kolben, SQLalchemie, SQLite und Python für meine Anwendung. Wenn ich den db init zum Erstellen der Datenbank ausführe, möchte ich, dass der Datenbank einige Standardwerte hinzugefügt werden. Ich habe diese beiden Dinge versucht, um die Datensätze in die Tabelle aufzunehmen. Eine Methode ist die Verwendung von '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()
Wenn ich renne
python manage_db.py db init,
python manage_db.py db migrate,
python manage_db.py db upgrade
Ich habe keine Probleme bekommen, aber die Datensätze werden nicht erstellt.
Die andere Methode, die ich ausprobiert habe, ist die, die ich in die models.py aufgenommen habe
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)
Der Klassenmodellcode:
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}')"
Wenn ich python manage_db.py db init ausführe, wird der Fehler Student_status angezeigt. Es gibt keine solche Tabelle.
Kann mir jemand helfen, die Standardwerte zur Tabelle student_status hinzuzufügen, wenn ich db init ausführe?
Ich habe es auch mit Flaschensämaschine versucht. Ich habe Flask Seeder installiert und eine neue Datei namens seeds.py hinzugefügt und den Flask Seed Run ausgeführt
Mein seeds.py sieht so aus
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)
Ich habe db init, db migrate und db upgrade ausgeführt. Ich habe keine Probleme bekommen. Wenn ich einen Kolbensamenlauf ausgeführt habe, wird dieser Fehler angezeigt
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
Ich habe es gegoogelt und versucht, FLASK_APP = seeds.py zu exportieren
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.
quelle
Humm, scheint, als würdest du einen Unterstrich einfügen,
Student_status
versuche ihn zu entfernen. Wenn Sie versuchen, Ihre Klasse in CamelCase zu schreiben, können Sie einen Code eher "pythonisch" schreiben. Wenn Sie ihn ausführen, wandelt die SQLalchemy diesen Klassennamen automatisch in die Tabelle student_status umquelle