from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 数据库配置 USERNAME = 'root' PASSWORD = '123456' HOST = '127.0.0.1' PORT = '3306' DATABASE = 'aa_flask' app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME, PASSWORD, HOST, PORT, DATABASE) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 动态跟踪修改设置,如果未设置会弹出警告 app.config['SQLALCHEMY_ECHO'] = True # 查询时会显示原始的sql语句 db = SQLAlchemy(app) # 创建实例,读配置参数,将和数据库相关的配置加载到SQLAlchemy对象中 # 一对一的关系,relationship用在一,外键用在多 class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(200), 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")) # 表名+字段名 users=db.relationship('User',backref=db.backref('articles'),uselist=False) @app.route('/createtable') def create_table(): db.create_all() return "创建表成功" # 删除表 @app.route('/droptable') def droptable(): db.drop_all() return '删除表成功' @app.route('/add') def add(): # 添加两条用户信息 user1 = User(username="赵景潮") user2 = User(username="刘强东") user3 = User(username="黄一凡") db.session.add(user1) db.session.add(user2) db.session.add(user3) # 添加三条文章信息 article1 = Article(title="西游记", content="三打白骨精", author_id=1) article2 = Article(title="水浒传", content="武松打虎", author_id=2) article3 = Article(title="三国演义", content="桃园三结义", author_id=3) db.session.add(article1) db.session.add(article2) db.session.add(article3) db.session.commit() return "添加成功" @app.route('/sel2') def select(): user=User.query.filter(User.username== '刘强东' ).first() #查询符合条件的记录 art=user.articles #取得user对象的所有acticle属性 print(art) for k in art: #遍历整个article print(k) #打印输出 print(k.title) #打印输出标题 article=Article.query.filter(Article.id==2).first()#获取 user=article.users #获取article对象的users属性 print(user.username) #打印输出用户名 return "查询数据成功" if __name__ == '__main__': app.run(debug=True)
最后给亲爱的小伙伴分享一下Flask学习必备资料,点击下面链接可取:
flask英文文档:https://flask.palletsprojects.com/en/1.1.x/
flask中文文档:https://dormousehole.readthedocs.io/en/1.1.2/
jinja2英文文档:https://jinja.palletsprojects.com/en/3.0.x/
flask-bootstrap中文文档:https://flask-bootstrap-zh.readthedocs.io/zh/latest/
bootstrap3组件文档:https://v3.bootcss.com/components/