sql >> データベース >  >> RDS >> PostgreSQL

SQLAlchemy create_all()はテーブルを作成しません

    モデルクラスはcreate_all()の前に配置する必要があります このように電話してください:

    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
    

    モデルが別のモジュールで宣言されている場合は、create_all()を呼び出す前にモデルをインポートしてください 。

    たとえば、User モデルは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
    

    重要な注意: dbを初期化した後、モデルをインポートすることが重要です。 それ以降、models.py内のオブジェクト _dbもインポートする必要があります このモジュールのオブジェクト。



    1. 変数を使用せずにplpgsql関数に整数を返すようにできますか?

    2. Null値で列を更新する

    3. OracleデータベースでRAISE_APPLICATION_ERRORメソッドを使用してユーザー定義の例外を宣言する

    4. SQLServerデータベースのスコープ構成と自動プラン修正