国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python Flask Web開發(fā)二:數(shù)據(jù)庫創(chuàng)建和使用

這篇具有很好參考價(jià)值的文章主要介紹了Python Flask Web開發(fā)二:數(shù)據(jù)庫創(chuàng)建和使用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

數(shù)據(jù)庫在 Web 開發(fā)中起著至關(guān)重要的作用。它不僅提供了數(shù)據(jù)的持久化存儲(chǔ)和管理功能,還支持?jǐn)?shù)據(jù)的關(guān)聯(lián)和連接,保證數(shù)據(jù)的一致性和安全性。通過合理地設(shè)計(jì)和使用數(shù)據(jù)庫,開發(fā)人員可以構(gòu)建強(qiáng)大、可靠的 Web 應(yīng)用程序,滿足用戶的需求。這里介紹:SQLAlchemy

一、SQLAlchemy安裝

安裝pymysql和SQLAlchemy,打開pycharm,打開終端,分別執(zhí)行這兩個(gè)命令

pip install pymysql
pip install SQLAlchemy

看到這樣就是表示安裝成功了

Python Flask Web開發(fā)二:數(shù)據(jù)庫創(chuàng)建和使用,Python,python,flask,數(shù)據(jù)庫

然后,執(zhí)行這個(gè)命令檢查SQLAlchemy是否正確安裝,運(yùn)行這個(gè)命令會(huì)輸出版本號(hào)的。

python -c "import sqlalchemy; print(sqlalchemy.__version__)"

二、Flask-Migrate的安裝和使用

Flask-Migrate是一個(gè)使用 Alembic 處理 Flask 應(yīng)用程序的 SQLAlchemy 數(shù)據(jù)庫遷移的擴(kuò)展。數(shù)據(jù)庫操作可通過 Flask 命令行界面進(jìn)行。Flask-Migrate 是一個(gè)擴(kuò)展,它以正確的方式配置 Alembic 以與 Flask 和 Flask-SQLAlchemy 應(yīng)用程序配合使用。就實(shí)際的數(shù)據(jù)庫遷移而言,一切都由 Alembic 處理,因此您可以獲得完全相同的功能。

2.1、Flask-Migrate安裝

使用pip安裝,在開發(fā)工具的命令行里面執(zhí)行

pip install Flask-Migrate

出現(xiàn)這樣表示安裝成功

Python Flask Web開發(fā)二:數(shù)據(jù)庫創(chuàng)建和使用,Python,python,flask,數(shù)據(jù)庫

2.2、Flask-Migrate使用

2.2.1、在__init__.py里面編寫

# __init__.py 文件是一個(gè)特殊的文件,它在包的目錄中起到了重要的作用
# 主要作用如下:
# 聲明包:__init__.py 文件的存在將目錄標(biāo)識(shí)為一個(gè)包。它告訴 Python 解釋器該目錄是一個(gè)包,并且可以在該目錄中使用包的相關(guān)功能。
# 初始化模塊:__init__.py 文件可以包含初始化代碼,當(dāng)導(dǎo)入包時(shí),這些代碼將在包的命名空間中執(zhí)行。這些初始化代碼可以用于設(shè)置包的環(huán)境、導(dǎo)入子模塊或執(zhí)行其他必要的操作。
# 控制導(dǎo)入行為:__init__.py 文件可以控制包的導(dǎo)入行為。通過在 __init__.py 文件中定義 __all__ 變量,可以指定導(dǎo)入包時(shí)應(yīng)該導(dǎo)入的模塊列表。這樣可以控制模塊的可見性和公開的接口。
# 提供包級(jí)別的功能:__init__.py 文件可以包含包級(jí)別的變量、常量、函數(shù)或類,這些可以在包內(nèi)的其他模塊中使用。
from flask import Flask
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from .config import Config


app = Flask(__name__)
app.config.from_object(Config)

db = SQLAlchemy(app)
migrate = Migrate(app, db)

2.2.2、在config.py里面編寫

import os


class Config(object):
    BASE_DIR = os.path.abspath(os.path.dirname(__file__))
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    SQLALCHEMY_RECORD_QUERIES = True
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
                              'sqlite:///' + os.path.join(BASE_DIR, 'database.sqlite')
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    SQLALCHEMY_ECHO = True

2.2.3、在models.py里面編寫

單個(gè)點(diǎn)號(hào)(.)表示當(dāng)前目錄或當(dāng)前模塊

from . import db


class User(db.Model):
    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(50), unique=True, nullable=False)
    password = db.Column(db.String(255), nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    name = db.Column(db.String(50), unique=True, nullable=False)
    created_at = db.Column(db.DateTime, nullable=False)

2.2.4、在app.py里面編寫

from datetime import datetime
from flask import Flask, request, jsonify
from .Response.ResMsg import ResMsg
from .models import User

from . import app, db


@app.route("/login", methods=["POST", "GET"])
def login():
    # get username and password form json post
    username = request.json.get("username")
    password = request.json.get("password")
    if username == "admin" and password == "123456":

        # 假設(shè)登錄成功后你已經(jīng)獲得了相應(yīng)的用戶名、密碼和電子郵件
        username = "sandy"
        password = "123456"
        email = "sady@gmail.com"

        # 創(chuàng)建 User 對(duì)象并設(shè)置字段值
        new_user = User(
            username=username,
            password=password,
            email=email,
            name="Sandy",
            created_at=datetime.now()
        )

        # 將新用戶對(duì)象添加到數(shù)據(jù)庫會(huì)話中
        db.session.add(new_user)

        # 提交會(huì)話以保存更改到數(shù)據(jù)庫
        db.session.commit()
        response = {"code": 200,
                    "msg": "登錄成功",
                    }
        return jsonify(response)
    else:
        response = {"code": 400,
                    "msg": "登錄失敗",
                    }
        return jsonify(response)

2.2.5、db安裝,創(chuàng)建遷移存儲(chǔ)庫,分別執(zhí)行這兩個(gè)命令

flask db init
flask db migrate -m "Initial migration."

Python Flask Web開發(fā)二:數(shù)據(jù)庫創(chuàng)建和使用,Python,python,flask,數(shù)據(jù)庫

這樣就會(huì)在項(xiàng)目里面生成一個(gè)在 config.py里面寫的database.sqlite數(shù)據(jù)庫.

再在項(xiàng)目的終端里面執(zhí)行下面命令,可以將遷移腳本描述的更改應(yīng)用到您的數(shù)據(jù)庫。

flask db upgrade

Python Flask Web開發(fā)二:數(shù)據(jù)庫創(chuàng)建和使用,Python,python,flask,數(shù)據(jù)庫

每次數(shù)據(jù)庫模型更改時(shí),請(qǐng)重復(fù)migrateupgrade命令。

三、創(chuàng)建數(shù)據(jù)表

3.1、運(yùn)行:flask run

3.2、然后在rest-api.http文件里面編寫這些代碼,點(diǎn)擊三角形運(yùn)行

Python Flask Web開發(fā)二:數(shù)據(jù)庫創(chuàng)建和使用,Python,python,flask,數(shù)據(jù)庫

3.3、刷新,查看users表

Python Flask Web開發(fā)二:數(shù)據(jù)庫創(chuàng)建和使用,Python,python,flask,數(shù)據(jù)庫

??注意:后面表里面有新增或者刪除字段的還執(zhí)行這兩步就可以了

flask db migrate -m "說明"

flask db upgrade

恭喜你,到這里為止,你就成功搭建好數(shù)據(jù)庫和管理功能了,咱們下一集見文章來源地址http://www.zghlxwxcb.cn/news/detail-686893.html

到了這里,關(guān)于Python Flask Web開發(fā)二:數(shù)據(jù)庫創(chuàng)建和使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包