ホームページ バックエンド開発 Python チュートリアル Python での flask_merge と flask_script の使用の概要 (コード付き)

Python での flask_merge と flask_script の使用の概要 (コード付き)

Nov 15, 2018 pm 03:01 PM
mysql python windows

この記事では、Python での flask_merge と flask_script の使用方法を紹介します (コード付き)。これには一定の参考価値があります。必要な友人は参照できます。お役に立てれば幸いです。

flask_merge

falsk_sqlalchemy を使用する場合、後で「db.create_all」を使用してデータベース テーブルのフィールドを変更すると、データベースに自動的にマッピングされないため、削除する必要があります。 ,

次に、「db.create_all」を再実行して再マップします。これは要件を満たしていないため、
この問題を解決するには flask-migrate を使用します。モデル (クラス)

from flask_sqlalchemy import SQLAlchemy
from flask import Flask
import pymysql
from sqlalchemy import desc
from flask_bootstrap import Bootstrap


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

class User(db.Model):
    id = db.Column(db.INTEGER,autoincrement=True,primary_key=True)
    # 用户名唯一且不能为空
    name = db.Column(db.String(30),unique=True,nullable=False)
    # 测试:添加gender属性
    gender = db.Column(db.BOOLEAN,default=True)
    todos = db.relationship('Todo',backref='user')

class Todo(db.Model):
    id = db.Column(db.INTEGER, autoincrement=True, primary_key=True)
    # unique: 指定该列信息是唯一的;
    name = db.Column(db.String(50))
    user_id = db.Column(db.INTEGER,db.ForeignKey('user.id'))
if __name__ == '__main__':
    db.create_all()
ログイン後にコピー

データベース テーブル user と todo が生成され、テーブルにデータが含まれている場合、モデル (クラス) を変更するたびに、変更されたフィールドをデータベースにマップできます。このとき、ユーザーの使用に影響を与えずにデータベース テーブルに属性 (ユーザーの性別) を追加する必要があるため、データベース マイグレーションを使用してこれを処理し、元のデータベース操作ファイル model

 # 测试:添加gender属性
    gender = db.Column(db.BOOLEAN,default=True)
ログイン後にコピー
# に属性を生成するコードを追加します。

##main 属性の移行

移行ウェアハウス (移行ディレクトリ) の作成

python manager.py  db init
ログイン後にコピー
実際に追加または削除せずに、クラスのコンテンツを読み取り、バージョン ファイルを生成します。データベース;

python manager.py  db migrate -m "添加性别"
ログイン後にコピー
データベース内で削除されました;

python manager.py  db upgrade
ログイン後にコピー
変更の履歴ステータスを表示します;

python manager.py  db history
ログイン後にコピー
指定されたバージョンのステータスに戻ります;

python manager.py  db downgrade  base
ログイン後にコピー

Python での flask_merge と flask_script の使用の概要 (コード付き)

データベース変更の管理

データベース変更を管理するための新しい manage.py ファイルを作成します

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from models import app,db
migrate = Migrate(app,db)
manager = Manager(app)
manager.add_command('db',MigrateCommand)

if __name__ == '__main__':
    manager.run()
ログイン後にコピー
手順:

1. 初始化(自动生成migrations目录)
python manager.py db init

2. 生成最初的迁移
python manager.py db migrate -m '添加用户性别'
出现语句:Detected added column 'user.gender',表明对model有所改动

3.数据库升级
python manager.py db upgrade
生成数据库历史版本的py文件:Running upgrade  -> 202a710ebeb6, '添加用户性别'
ログイン後にコピー

flask_script

Flask Script 拡張機能は、外部スクリプトを Flask に挿入する機能を提供し、スクリプトをシステムから分離します

全体的なフレームワーク

最初に、Python テンプレートを作成します。Python テンプレートは、script.py という名前のコマンド スクリプトを実行します。

このファイルには、Manager インスタンスが必要です。Manager クラスは、すべてのコマンドの実行を追跡します。
Manager には 1 つのパラメータしかありません - Flask インスタンス

from flask_script import Command,Manager
from flask import Flask

app = Flask(__name__)

manager = Manager(app)
if __name__ == '__main__':
    manager.run()
ログイン後にコピー

コマンドの作成

次に、コマンドを作成して追加します。

コマンドを作成するには 3 つの方法があります。つまり、コマンド サブクラスの作成、@command 修飾子を使用する方法、および @option 修飾子を使用する方法です。

最初の方法 - コマンド サブクラスの作成

サブクラスは次のようにする必要があります。実行メソッドを定義する
Hello コマンドを作成し、Hello コマンドを Manager インスタンスに追加する

class  Hello(Command):
    """欢迎信息"""
    def run(self):
        print('hello,sheen')

manager.add_command('hello',Hello)
ログイン後にコピー
2 番目のタイプ - Command インスタンスの @command 修飾子を使用する

@manager.command
def add_user():
    """添加用户信息"""

    print('添加用户成功')
ログイン後にコピー
3 番目のタイプ- コマンドの使用インスタンスの @option 修飾子

@option; を使用することをお勧めします。複数のパラメータを渡すことができます

@manager.option('-n','--name',help='删除用户')
def del_user(name):
    """删除用户信息"""

    if name:
        print('删除用户%s成功' %(name))
    else:
        print('用户名为空!')
ログイン後にコピー

完全な例

# script.py
from flask_script import Command,Manager
from flask import Flask

app = Flask(__name__)

manager = Manager(app)

class  Hello(Command):
    """欢迎信息"""
    def run(self):
        print('hello,sheen')

manager.add_command('hello',Hello)

@manager.command
def add_user():
    """添加用户信息"""

    print('添加用户成功')

@manager.option('-n','--name',help='删除用户')
def del_user(name):
    """删除用户信息"""

    if name:
        print('删除用户%s成功' %(name))
    else:
        print('用户名为空!')
if __name__ == '__main__':
    manager.run()
ログイン後にコピー

Python での flask_merge と flask_script の使用の概要 (コード付き)

以上がPython での flask_merge と flask_script の使用の概要 (コード付き)の詳細内容です。詳細については、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)

Navicatプレミアムの作成方法 Navicatプレミアムの作成方法 Apr 09, 2025 am 07:09 AM

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

NavicatでMySQLへの新しい接続を作成する方法 NavicatでMySQLへの新しい接続を作成する方法 Apr 09, 2025 am 07:21 AM

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

NavicatのローカルMySQLに接続する方法 NavicatのローカルMySQLに接続する方法 Apr 09, 2025 am 07:45 AM

NAVICATを使用してローカルMYSQLデータベースに接続するには:接続を作成し、接続名、ホスト、ポート、ユーザー名、およびパスワードを設定します。接続をテストして、パラメーターが正しいことを確認します。接続を保存します。接続リストから新しい接続を選択します。接続するデータベースをダブルクリックします。

さまざまなデータベースシステムに列を追加するための構文の違いは何ですか さまざまなデータベースシステムに列を追加するための構文の違いは何ですか Apr 09, 2025 pm 02:15 PM

and:mysql:Alter table_name add column_name data_type; postgresql:column column_name data_typeを変更するcolumn column_name datape; oracle:alter table_name add(column_name data_type);

Amazon AthenaでAWS接着クローラーの使用方法 Amazon AthenaでAWS接着クローラーの使用方法 Apr 09, 2025 pm 03:09 PM

データの専門家として、さまざまなソースから大量のデータを処理する必要があります。これは、データ管理と分析に課題をもたらす可能性があります。幸いなことに、AWS GlueとAmazon Athenaの2つのAWSサービスが役立ちます。

SQLグラフィカルツールに列を追加する方法は? SQLグラフィカルツールに列を追加する方法は? Apr 09, 2025 pm 12:54 PM

SQLグラフィックスの列を追加するツール:追加する列を選択するテーブルを選択します。 [テーブルを変更]または同様のオプションを右クリックして選択します。新しい列のプロパティ(名前、データ型、長さ、または空のかどうか)を定義します。該当する場合は、新しい列のデフォルト値を指定します。データエラーを回避するには、適切なデータ型を選択します。意味のある列名を使用します。大きなテーブルで列の追加操作を実行する際のパフォーマンスへの影響を考慮してください。データの損失を防ぐために、操作の前に常にデータベースをバックアップしてください。

SQL Classic 50質問の回答 SQL Classic 50質問の回答 Apr 09, 2025 pm 01:33 PM

SQL(Structured Query Language)は、データベースの作成、管理、およびクエリに使用されるプログラミング言語です。主な機能には、データベースとテーブルの作成、データの挿入、更新、削除、結果の結果とフィルタリング機能、集約関数、テーブルの結合、サブQUERIES、オペレーター、機能、キーワード、データ操作/定義/コントロール言語、接続タイプ、クエリ最適化、セキュリティ、ツール、リソース、リソース、バージョン、一般的なエラー、ロバット、ロバット、ドバギングのエリック。

NAVICATでSQLファイルをインポートする方法 NAVICATでSQLファイルをインポートする方法 Apr 09, 2025 am 08:54 AM

NAVICATでSQLファイルをインポートする方法は? NAVICATを開き、ターゲットデータベースに接続します。 [クエリ]タブに移動します。 [SQLファイルのインポート]ボタンをクリックします。 SQLファイルを選択し、インポートオプションを設定します。 [インポート]ボタンをクリックして、インポートを開始します。

See all articles