1.项目初始化目录
image.png

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模型映射成表的三步(有新增字段只需要执行后面两步)
# 1.fLask db init;这步只需要执行一次
# 2.fLask db migrate: 识别ORM模型的改变,生成迁移脚本
# 3.flask db upgrade: 运行迁移脚本,同步到数据库中
migrate = Migrate(app, db)
# 测试数据库链接
# with app.app_context():
# with db.engine.connect() as conn:
# rs = conn.execute(text("select 1"))
# print(rs.fetchone())
# 动态生成数据库表
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:会自动的给User模型添加一个articles的属性,用来获取文竟列表
author = db.relationship("User", backref="articles")
# 执行生成表的代码(使用Migrate后就不再需要)
# with app.app_context():
# db.create_all()
@app.route("/user/add")
def add_user():
# 1.创建ORM对象
user = User(username="法外狂徒张三", password='111111')
# 2.将ORM对象添加到dbsession中
db.session.add(user)
# 3.将db.session 中的改变同步到数据库中
db.session.commit()
return '用户创建成功'
@app.route("/user/query")
def query_user():
# 1.get查找:根据主键查找
# user = User.query.get(1)
# print(f"{user.id}: {user.username}-{user.password}")
# 2.filter_by查找多条数据
users = User.query.filter_by(username="法外狂徒张三")
for user in users:
print(user.username)
return "数据查找成功"
@app.route("/user/update")
def update_user():
user = User.query.filter_by(username="法外狂徒张三").first()
user.password ="222222"
db.session.commit()
return "数据修改成功"
@app.route('/user/delete')
def delete_user():
#1.查找
user = User.query.get(1)
# 2.从db.session中删除
db.session.delete(user)
# 3.将db.session中的修改,同步到数据库中
db.session.commit()
return "数据删除成功"
@app.route("/article/add")
def article_add():
article1 = Article(title="Flask学习大纲", content="Flaskxxxx")
article1.author = User.query.get(1)
article2 = Article(title="Django学习大纲", content="Django最全学习大纲")
article2.author = User.query.get(1)
# 添加到session中
db.session.add_all([article1, article2])
# 同步session中的数据到数据库中
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社区版开启debugger模式,实时刷新代码
if __name__ == '__main__':
app.run(debug=True)