ホームページ >バックエンド開発 >Python チュートリアル >flask_sqlalchemy が Python でデータベースを操作する方法の例

flask_sqlalchemy が Python でデータベースを操作する方法の例

不言
不言転載
2018-11-15 14:06:294705ブラウズ

この記事では、Python で flask_sqlalchemy がデータベースを操作する例を紹介します。一定の参考値があります。必要な友人は参照できます。お役に立てれば幸いです。

flask_sqlalchemy

オブジェクト リレーショナル マッパー (ORM) フレームワークを使用します。これは、低レベルのデータベース操作命令を高レベルのオブジェクト指向操作に抽象化します。つまり、データベース エンジンを直接使用すると、SQL 操作ステートメントを記述する必要がありますが、ORM フレームワークを使用すると、テーブルやドキュメントなどのデータベース エンティティの操作を Python オブジェクト操作に簡素化できます

SQLAlchemy は、Python の世界における ORM の標準となっています。Flask は、ORM で自由に使用できる軽量の Web フレームワークです。Flask-sqlalchemy は、Flask 用に特別に設計されたプラグインです。

Flask-SQLAlchemy では、データベースは URL を使用して指定されます。

MySQL -->  mysql://username:password@hostname/database

インストール

 pip install flask-sqlalchemy

データベース操作

##1. データベース操作接続の作成方法

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:sheen@localhost/zaj_sql'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

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)
初期データベースを作成するには、SQLAlchemy.create_all() メソッドを呼び出してテーブルとデータベースを作成します。

   db.create_all()
データベースが生成されました。次に、いくつかのユーザーを作成しましょう

admin = User('admin', 'admin@example.com')
guest = User('guest', 'guest@example.com')
ただし、実際にはまだデータベースに書き込まれていないため、データベースに書き込まれたことを確認しましょう

db.session.add(admin)
db.session.add(guest)
db.session.commit()

2. リレーションシップを作成しますタイプ データベース テーブル

SQLAlchemy はリレーショナル データベースに接続されています。リレーショナル データの最も優れた点は関係です。したがって、例として 2 つの関連テーブルを使用するアプリケーションを作成します。

最も一般的な関係は 1 対多の関係です。リレーションシップは作成前に宣言されるため、文字列を使用してまだ作成されていないクラスを参照できます。
リレーションシップは relationship() 関数を使用して表現されます。ただし、外部キーはクラス sqlalchemy.schema.ForeignKey を使用して個別に宣言する必要があります。

from datetime import datetime
from flask_bootstrap import Bootstrap
from flask_wtf import FlaskForm
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
import pymysql
from sqlalchemy import desc

app = Flask(__name__)
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:sheen@localhost/zaj_sql'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
bootstrap = Bootstrap(app)

class User(db.Model):
    id = db.Column(db.Integer,autoincrement=True,primary_key=True)
    name = db.Column(db.String(50),unique=True)
    passwd = db.Column(db.String(100))
    add_time = db.Column(db.DATETIME,default=datetime.now())
    gender = db.Column(db.BOOLEAN,default=True)
    role_id = db.Column(db.INTEGER,db.ForeignKey('role.id'))

    def __repr__(self):
        return '<user:>' %(self.name)

class Role(db.Model):
    id = db.Column(db.INTEGER,autoincrement=True,primary_key=True)
    name = db.Column(db.String(50),unique=True)
    users = db.relationship('User',backref='role')
    # 给Role模型添加users属性
    # backref 是定义反向引用
        def __repr__(self):
        return '<role:>' % (self.name)
if __name__ =='__main__':
    # 1. 创建数据库表
    # db.drop_all()
    # db.create_all()
    # # 2. 创建role数据库表数据
    role_1 = Role(name='超级会员')
    role_2 = Role(name='普通会员')

    db.session.add(role_1)
    db.session.add(role_2)

    db.session.commit()

    # # # 3. 添加user表内数据,100个用户,50个为超级会员,50个为普通会员
    for i in range(1,13):
        if i%2 == 0:
            u = User(name='sheen'+str(i),passwd='sheen',role_id=1)
            db.session.add(u)
        else:
            u = User(name='star'+str(i),passwd='star',role_id=2)
            db.session.add(u)
    db.session.commit()</role:></user:>
backref は、User.role を通じてロール オブジェクトとプロパティを定義する後方参照です。


flask_sqlalchemy が Python でデータベースを操作する方法の例

flask_sqlalchemy が Python でデータベースを操作する方法の例#すべてのデータをクエリする

    print('角色',Role.query.all())
    print('用户',User.query.all())

条件に基づいてデータをクエリする

#
    # select * from tablename where xxx=xxxxx
    print(User.query.filter_by(role_id=1).all())
    print(Role.query.filter_by().all())
    print(User.query.filter_by(role_id=2).all())

flask_sqlalchemy が Python でデータベースを操作する方法の例見つかったデータを更新します

 print('进行数据更新',end='\n')
    u =User.query.filter_by(name='sheen2').first()
    print(u)
    u.passwd = '123'
    db.session.add(u)
    db.session.commit()

flask_sqlalchemy が Python でデータベースを操作する方法の例データをフィルター処理するメソッド 2 (フィルター)、このメソッドはネイティブ SQL ステートメントを確認できます

    print('数据筛选', end='\n')
    user = User.query.filter(User.role_id==1)
    print(user)

flask_sqlalchemy が Python でデータベースを操作する方法の例クエリされた情報の表示を制限する

    print('限制查询数据的显示', end='\n')

    users = User.query.filter_by(role_id=1).limit(3).all()
    print(users)

クエリされた情報を並べ替えて出力します (デフォルトでは、小さい順に並べ替えます)。大から小さい順に並べ替えたい場合は、 desc(User. add_time)

    print('数据再处理', end='\n')
    users = User.query.filter_by(role_id=1).order_by(desc(User.name)).all()
    print(users)

複数のフィルター関数

print('多个过滤函数', end='\n')
    users = User.query.filter_by(role_id=1).order_by(desc(User.name)).limit(3).offset(1).all()
    print(users)
    users = User.query.filter_by(role_id=1).order_by(desc(User.name)).slice(1,4).all()
    print(users)

flask_sqlalchemy が Python でデータベースを操作する方法の例ページング。最初のパラメーターはデータのどのページが表示されるかを示し、2 番目のパラメーターは各ページの表示を示します。ページ データ数

    print('分页显示', end='\n')

    users = User.query.paginate(1,5)
    print(users.items)
    users = User.query.paginate(2, 5)
    print(users.items)

flask_sqlalchemy が Python でデータベースを操作する方法の例

以上がflask_sqlalchemy が Python でデータベースを操作する方法の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。