flask入門

1.項(xiàng)目初始化目錄
image.png
2.入口文件app.py
from flask import Flask, request, render_template
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from sqlalchemy import text

app = Flask(__name__)
HOSTNAME = "127.0.0.1"
PORT = 3306
USERNAME = "root"
PASSWORD = "root"
DATABASE = "test1"
app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"
db = SQLAlchemy(app)
# ORM模型映射成表的三步(有新增字段只需要執(zhí)行后面兩步)
# 1.fLask db init;這步只需要執(zhí)行一次
# 2.fLask db migrate: 識(shí)別ORM模型的改變,生成遷移腳本
# 3.flask db upgrade: 運(yùn)行遷移腳本,同步到數(shù)據(jù)庫中
migrate = Migrate(app, db)


# 測(cè)試數(shù)據(jù)庫鏈接
# with app.app_context():
#     with db.engine.connect() as conn:
#         rs = conn.execute(text("select 1"))
#         print(rs.fetchone())


# 動(dòng)態(tài)生成數(shù)據(jù)庫表
class User(db.Model):
    __tablename__ = "user"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(100), nullable=False)
    password = db.Column(db.String(100), nullable=False)


class Article(db.Model):
    __tablename__ = "article"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(200), nullable=False)
    content = db.Column(db.Text, nullable=False)
    # 添加作者的外鍵
    author_id = db.Column(db.Integer, db.ForeignKey("user.id"))
    # backref:會(huì)自動(dòng)的給User模型添加一個(gè)articles的屬性,用來獲取文竟列表
    author = db.relationship("User", backref="articles")


# 執(zhí)行生成表的代碼(使用Migrate后就不再需要)
# with app.app_context():
#     db.create_all()


@app.route("/user/add")
def add_user():
    # 1.創(chuàng)建ORM對(duì)象
    user = User(username="法外狂徒張三", password='111111')
    # 2.將ORM對(duì)象添加到dbsession中
    db.session.add(user)
    # 3.將db.session 中的改變同步到數(shù)據(jù)庫中
    db.session.commit()
    return '用戶創(chuàng)建成功'


@app.route("/user/query")
def query_user():
    # 1.get查找:根據(jù)主鍵查找
    # user = User.query.get(1)
    # print(f"{user.id}: {user.username}-{user.password}")
    # 2.filter_by查找多條數(shù)據(jù)
    users = User.query.filter_by(username="法外狂徒張三")
    for user in users:
        print(user.username)
    return "數(shù)據(jù)查找成功"


@app.route("/user/update")
def update_user():
    user = User.query.filter_by(username="法外狂徒張三").first()
    user.password ="222222"
    db.session.commit()
    return "數(shù)據(jù)修改成功"


@app.route('/user/delete')
def delete_user():
    #1.查找
    user = User.query.get(1)
    # 2.從db.session中刪除
    db.session.delete(user)
    # 3.將db.session中的修改,同步到數(shù)據(jù)庫中
    db.session.commit()
    return "數(shù)據(jù)刪除成功"


@app.route("/article/add")
def article_add():
    article1 = Article(title="Flask學(xué)習(xí)大綱", content="Flaskxxxx")
    article1.author = User.query.get(1)
    article2 = Article(title="Django學(xué)習(xí)大綱", content="Django最全學(xué)習(xí)大綱")
    article2.author = User.query.get(1)
    # 添加到session中
    db.session.add_all([article1, article2])
    # 同步session中的數(shù)據(jù)到數(shù)據(jù)庫中
    db.session.commit()
    return "文章添加成功"


@app.route("/article/query")
def query_article():
    user = User.query.get(1)
    for article in user.articles:
        print(article.title)
        return "文章查找成功"


@app.route('/')
def hello_world():
    return render_template('index.html', id=666)


@app.route('/user')
def user():
    # 使用request獲取url傳參
    print(request.args.get('name', default='lisi', type=str))
    return '用戶頁面'


# 可以定義類型<int:user_id>
@app.route('/user/<user_id>')
def detail(user_id):
    return '用戶id是' + user_id


if __name__ == '__main__':
    app.run(debug=True)

3.pycharm社區(qū)版開啟debugger模式,實(shí)時(shí)刷新代碼
if __name__ == '__main__':
    app.run(debug=True)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容