前言
數(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
看到這樣就是表示安裝成功了
然后,執(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)這樣表示安裝成功
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."
這樣就會(huì)在項(xiàng)目里面生成一個(gè)在 config.py里面寫的database.sqlite數(shù)據(jù)庫.
再在項(xiàng)目的終端里面執(zhí)行下面命令,可以將遷移腳本描述的更改應(yīng)用到您的數(shù)據(jù)庫。
flask db upgrade
每次數(shù)據(jù)庫模型更改時(shí),請(qǐng)重復(fù)migrate
和upgrade
命令。
三、創(chuàng)建數(shù)據(jù)表
3.1、運(yùn)行:flask run
3.2、然后在rest-api.http文件里面編寫這些代碼,點(diǎn)擊三角形運(yùn)行
3.3、刷新,查看users表
??注意:后面表里面有新增或者刪除字段的還執(zhí)行這兩步就可以了
flask db migrate -m "說明"
flask db upgrade文章來源:http://www.zghlxwxcb.cn/news/detail-686893.html
恭喜你,到這里為止,你就成功搭建好數(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)!