sql >> Database teknologi >  >> RDS >> PostgreSQL

SQLAlchemy create_all() opretter ikke tabeller

Du bør sætte din modelklasse før create_all() opkald, sådan her:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql+psycopg2://login:[email protected]/flask_app'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

    def __init__(self, username, email):
        self.username = username
        self.email = email

    def __repr__(self):
        return '<User %r>' % self.username

db.create_all()
db.session.commit()

admin = User('admin', '[email protected]')
guest = User('guest', '[email protected]')
db.session.add(admin)
db.session.add(guest)
db.session.commit()
users = User.query.all()
print users

Hvis dine modeller er erklæret i et separat modul, skal du importere dem, før du kalder create_all() .

Sig, User model er i en fil kaldet models.py ,

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql+psycopg2://login:[email protected]/flask_app'
db = SQLAlchemy(app)

# See important note below
from models import User

db.create_all()
db.session.commit()

admin = User('admin', '[email protected]')
guest = User('guest', '[email protected]')
db.session.add(admin)
db.session.add(guest)
db.session.commit()
users = User.query.all()
print users

Vigtig bemærkning: Det er vigtigt, at du importerer dine modeller efter initialisering af db objekt siden, i din models.py _du skal også importere db objekt fra dette modul.



  1. Brug "SELECT" til at kalde en funktion

  2. SQL INSERT uden at angive kolonner. Hvad der sker?

  3. Hvordan deaktiverer jeg SQLAlchemy-caching?

  4. sqlLiteDatabase.query() for INNER JOIN