创建数据表和数据:
# -*- coding:utf-8 -*-
# author: LIUWENYU
# datetime: 2020/9/16 17:07
# describe:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SECRET_KEY'] = '666'
# 连接数据库
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:密码@ip:3306/test'
# 设置是否跟踪数据库的修改情况,一般不跟踪
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 数据库操作时是否显示原始SQL语句,一般都是打开的,因为我们后台要日志
app.config['SQLALCHEMY_ECHO'] = True
# 实例化orm框架的操作对象,后续数据库操作,都要基于操作对象来完成
db = SQLAlchemy(app)
# 学生表
class FlaskStudent(db.Model):
__tablename__ = "flaskstudent"
id = db.Column(db.Integer,primary_key=True) # 主键
name = db.Column(db.String(64),nullable=False) # 学生姓名 不为空
gender = db.Column(db.Enum("男","女"),nullable=False) # 性别 枚举 不为空
if __name__ == '__main__':
db.drop_all()
db.create_all()
try:
us1 = FlaskStudent(name='wang',gender='男')
us2 = FlaskStudent(name='zhang',gender='男')
us3 = FlaskStudent(name='chen',gender='女')
us4 = FlaskStudent(name='zhou',gender='女')
us5 = FlaskStudent(name='tang',gender='女')
db.session.add_all([us1, us2, us3, us4, us5])
db.session.commit()
except Exception as e:
db.session.rollback()
raise e
调用接口(插 / 查)数据:
from flask import Flask, request, render_template, flash, redirect
import os
from flask_sqlalchemy import SQLAlchemy
from learn_sql import FlaskStudent # 上面创建的数据表
app = Flask(__name__)
app.secret_key = '666'
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
# 配置参数 关闭 CSRF 校验
app.config['WTF_CSRF_ENABLED'] = False
# 连接数据库
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:密码@ip:3306/test'
# 设置是否跟踪数据库的修改情况,一般不跟踪
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 数据库操作时是否显示原始SQL语句,一般都是打开的,因为我们后台要日志
app.config['SQLALCHEMY_ECHO'] = True
# 实例化orm框架的操作对象,后续数据库操作,都要基于操作对象来完成
db = SQLAlchemy(app)
# 插入数据
@app.route('/insert/<name>/<gender>')
def insert(name=None,gender=None):
insert1 = FlaskStudent(name=name, gender=gender)
db.session.add(insert1)
db.session.commit()
return name + gender
# 查询数据
@app.route('/select/<id>')
def select(id):
select1 = FlaskStudent.query.get(id)
name = select1.name
gender = select1.gender
return name + gender
# 删除数据
@app.route('/delete')
def delete():
pass
if __name__ == '__main__':
app.run(debug=True)
遇见 连接数据库 bug: