1.配置URL连接数据库
2.在MySQL中建立一张表
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:3202336152@localhost/student?charset=utf8' #配置URL
db = SQLAlchemy(app) #创建数据库对象
class Article(db.Model): #创建数据表模型
__tablename__ = 'information' #表名
id = db.Column(db.Integer, primary_key=True, autoincrement=True) #声明各个列内容
name = db.Column(db.String(100), nullable=False)
number = db.Column(db.Integer, nullable=False)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
db.drop_all() #清除表内容
db.create_all() #新创建表
app.run()
通过命令可以看见已经生成MySQL表
整体代码实现
- python 源代码
from flask import Flask, render_template,flash,request
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import FlaskForm
from wtforms import StringField,SubmitField,IntegerField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:320123@localhost/student?charset=utf8'
app.config['SQLALCHEMY_TRACK_MODIFCATIONS'] = False
app.secret_key = 'huanyu'
db = SQLAlchemy(app)
class Stu(db.Model):
__tablename__ = 'information'
id = db.Column(db.BigInteger, primary_key=True, autoincrement=True)
name = db.Column(db.String(100), primary_key=True, nullable=True)
xuehao = db.Column(db.BigInteger, nullable=True)
number = db.Column(db.BigInteger, nullable=True)
#自定义表单类
class Login(FlaskForm):
name = StringField('姓名:', validators=[DataRequired()]) #验证函数
xuehao = IntegerField('学号:', validators=[DataRequired()])
number = IntegerField('电话:', validators=[DataRequired()])
submit = SubmitField('提交')
@app.route('/',methods = ['GET','POST'])
def index():
stu = Login()
#调用WTF函数实现验证
if stu.validate_on_submit():
#验证通过获取数据
stu_name = stu.name.data
stu_xuehao = stu.xuehao.data
stu_number = stu.number.data
#添加数据
try:
new_stu = Stu(name=stu_name, xuehao=stu_xuehao, number=stu_number)
db.session.add(new_stu)
db.session.commit()
except Exception as e:
print(e) #打印错误类型
flash('添加失败')
db.session.rollback()
else:
#验证不通过提示错误
if request.method == 'POST':
flash('参数不全')
return render_template('index.html', stu=stu)
if __name__ == '__main__':
#db.drop_all() 删除表
#db.create_all() 新建表
app.run(debug=True)
- HTML 源代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>武汉工程大学</title>
<style type="text/css">
*{
background-color:write;
}
#tou p{
font-size: 40px;
text-align: center;
}
#qq {
text-align: center;
font__size:25px;
}
</style>
</head>
<body>
<div id="tou">
<p>学生信息填写</p>
</div>
<HR style="FILTER: alpha(opacity=100,finishopacity=0,style=3)" width="100%" color=#201E1E SIZE=6>
<div align="center" id="qq">
<form method="post">
{{ stu.csrf_token }}
{{ stu.name.label }} <p>{{ stu.name }}</p> <br>
{{ stu.xuehao.label }} <p>{{ stu.xuehao }}</p> <br>
{{ stu.number.label }} <p>{{ stu.number }}</p> <br>
{{ stu.submit }} <br>
{% for message in get_flashed_messages() %}
{{ message }}
{% endfor %}
</form>
</div>
</body>
</html>
实现效果
提交后即可保存本地数据库…
坚持是检验真理的唯一标准
come on — 寰宇