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

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

Nov 15, 2018 pm 02:06 PM
mysql python windows

この記事では、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

Oracleデータベースで構成されているファイルの種類は何ですか? Oracleデータベースで構成されているファイルの種類は何ですか? Apr 11, 2025 pm 03:03 PM

Oracle Databaseファイル構造には、データファイル:実際のデータの保存が含まれます。制御ファイル:データベース構造情報を記録します。ログファイルをやり直す:データの一貫性を確保するために、トランザクション操作を記録します。パラメーターファイル:パフォーマンスを最適化するためのデータベースを実行するパラメーターを含みます。アーカイブログファイル:災害復旧のためのバックアップREDOログファイル。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

Python vs. C:比較されたアプリケーションとユースケース Python vs. C:比較されたアプリケーションとユースケース Apr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

Oracleデータベースにログインする方法 Oracleデータベースにログインする方法 Apr 11, 2025 pm 02:39 PM

Oracleデータベースログインには、ユーザー名とパスワードだけでなく、接続文字列(サーバー情報と資格情報を含む)および認証方法も含まれます。 SQL*Plusおよびプログラミング言語コネクタをサポートし、ユーザー名とパスワード、Kerberos、LDAPなどの認証オプションを提供します。一般的なエラーには、接続文字列エラーと無効なユーザー名/パスワードが含まれますが、ベストプラクティスは接続プーリング、パラメーター化されたクエリ、インデックス作成、セキュリティの資格情報の処理に焦点を当てています。

mysqlデータテーブルフィールド操作ガイドの追加、変更、削除方法ガイド mysqlデータテーブルフィールド操作ガイドの追加、変更、削除方法ガイド Apr 11, 2025 pm 05:42 PM

MySQLのフィールド操作ガイド:フィールドを追加、変更、削除します。フィールドを追加:table table_nameを変更するcolumn_name data_type [not null] [default default_value] [プライマリキー] [auto_increment]フィールドの変更:column_name data_typeを変更するcolumn_name data_type [not null] [default default_value] [プライマリキー]

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

MySQLの解決策は、「ユーザーのために拒否されたアクセス」という問題に遭遇します MySQLの解決策は、「ユーザーのために拒否されたアクセス」という問題に遭遇します Apr 11, 2025 pm 05:36 PM

MySQLの「ユーザーのアクセス拒否」を解決する方法エラー:1。ユーザーの許可を確認して、データベースに接続します。 2。パスワードをリセットします。 3.リモート接続を許可します。 4。更新権限。 5.データベースサーバーの構成(Bind-Address、Skip-Grant-Tables)を確認します。 6.ファイアウォールルールを確認します。 7.MySQLサービスを再起動します。ヒント:データベースをバックアップした後に変更を加えます。

See all articles