主要代码app.py
from flask import Flask, render_template, redirect, request, url_forfrom flask_sqlalchemy import SQLAlchemyfrom flask_migrate import Migrateapp = Flask(__name__)''' 数据库的配置信息'''HOSTNAME = '127.0.0.1'POST = '3306'DATABASE = 'mytest'USERNAME = 'root'PASSWORD = '123456'DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME, PASSWORD, HOSTNAME, POST, DATABASE)app.config['SQLALCHEMY_DATABASE_URI'] = DB_URIapp.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Truedb = SQLAlchemy(app)migrate=Migrate(app,db)''' 使用flask_migrate把数据模型映射到MySql数据中 数据模型完成后,用三个命令把模型映射到数据库中 打开Pycharm的Terminal flask db init->flask db migrate->flask db upgrade 这样就可以完成映射'''class Phone(db.Model): __tablename__ = 'phone' id = db.Column(db.Integer, primary_key=True, autoincrement=True) phonename = db.Column(db.String(20), nullable=False) price = db.Column(db.Integer, nullable=False)class Person(db.Model): __tablename__ = 'person' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(20), nullable=False) age = db.Column(db.Integer, nullable=False) pid = db.Column(db.Integer, db.ForeignKey('phone.id')) phone = db.relationship('Phone', backref='person')''' 添加数据'''@app.route('/add', methods=['get', 'post'])def add(): personname = request.form.get('personname') age = request.form.get('age') phonename = request.form.get('phonename') price = request.form.get('price') person = Person(name=personname, age=age) phone = Phone(phonename=phonename, price=price) person.phone = phone db.session.add(person) db.session.add(phone) db.session.commit() return redirect('/')''' 查询数据'''@app.route('/search', methods=['get', 'post'])def search(): persons = Person.query.all() return render_template('search.html', person=persons)''' 根据id获取一条,需要修改的数据'''@app.route('/get_id/<pid>', methods=['get', 'post'])def get_id(pid): pe = Person.query.filter_by(id=pid)[0] getId = request.form.get('btn') return render_template('query_id.html', pe=pe)''' 修改数据'''@app.route('/upgrade/<int:peid>', methods=['get', 'post'])def upgrade(peid): pname = request.form.get('pname') page = request.form.get('page') pphone=request.form.get('pphone') pprice=request.form.get('pprice') person = Person.query.filter_by(id=peid)[0] person.name = pname person.age = page person.phone.phonename=pphone person.phone.price=pprice db.session.commit() return redirect(url_for('search'))''' 根据id删除数据'''@app.route('/delete/<int:did>', methods=['get', 'post'])def delete(did): Person.query.filter_by(id=did).delete() # Person.phone.query(id=did).delete() db.session.commit() return redirect(url_for('search'))@app.route('/')def index(): return render_template('add.html')if __name__ == '__main__': app.run()
页面模板的父模板base.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <link rel="stylesheet" href="{{ url_for('static',filename='bootstrap/css/bootstrap.css') }}"> <script src="{{ url_for('static',filename='bootstrap/js/jquery-3.5.1.js') }}"></script> <script src="{{ url_for('static',filename='bootstrap/js/bootstrap.js') }}"></script> <title>{% block title %}{% endblock %}</title> {% block head %}{% endblock %}</head><body><div class="container"> {% block body %}{% endblock %}</div></body></html>
添加数据的页面add.html
{% extends 'base.html' %}{% block title %}增加数据{% endblock %}{% block head %}{% endblock %}{% block body %} <div class="row"> <div class="col"></div> <div class="col-5" style="margin-top: 30px"> <form action="{{ url_for('add') }}" method="post"> <div class="form-group row"> <label class="col-sm-2 col-form-label">姓名:</label> <div class="col-sm-10"> <input type="text" name="personname" class="form-control"> </div> </div> <div class="form-group row"> <label class="col-sm-2 col-form-label">年龄:</label> <div class="col-sm-10"> <input type="text" name="age" class="form-control"> </div> </div> <div class="form-group row"> <label class="col-sm-2 col-form-label">手机:</label> <div class="col-sm-10"> <input type="text" name="phonename" class="form-control"> </div> </div> <div class="form-group row"> <label class="col-sm-2 col-form-label">价格:</label> <div class="col-sm-10"> <input type="text" name="price" class="form-control"> </div> </div> <div class="form-group " style="float: left;text-align: right"> <button type="submit" class="btn btn-primary">添加</button> </div> </form> <div class="form-group " style="text-align: right"> <form action="{{ url_for('search') }}" method="post"> <button type="submit" class="btn btn-primary">查询</button> </form> </div> </div> <div class="col"></div> </div>{% endblock %}
添加数据的页面实际效果图
查询数据的页面代码search.html
{% extends 'base.html' %}{% block title %}查询数据{% endblock %}{% block head %}{% endblock %}{% block body %} <table class="table table-bordered table-hover" style="text-align: center;margin-top: 30px"> <thead> <tr> <th scope="col">编号</th> <th scope="col">姓名</th> <th scope="col">年龄</th> <th scope="col">手机</th> <th scope="col">价格</th> <th scope="col" colspan="2">操作</th> </tr> </thead> <tbody> {% for item in person %} <tr> <th scope="row">{{ item.id }}</th> <td>{{ item.name }}</td> <td>{{ item.age }}</td> <td>{{ item.phone.phonename }}</td> <td>{{ item.phone.price }}</td> <td> <form action="{{ url_for('get_id',pid=item.id) }}" method="post"> <button type="submit" class="btn btn-primary">修改</button> </form> </td> <td> <form action="{{ url_for('delete',did=item.id) }}" method="post"> <button type="submit" class="btn btn-danger btn-sm">删除</button> </form> </td> </tr> {% endfor %} </tbody> </table>{% endblock %}
查询数据的页面实际效果图
根据id获取一条需要修改的数据的页面query_id.html
{% extends 'base.html' %}{% block title %}增加数据{% endblock %}{% block head %}{% endblock %}{% block body %} <div class="row"> <div class="col"></div> <div class="col-5" style="margin-top: 30px"> <form action="{{ url_for('upgrade',peid=pe.id) }}" method="post"> <div class="form-group row"> <label class="col-sm-2 col-form-label">姓名:</label> <div class="col-sm-10"> <input type="text" name="pname" value="{{ pe.name }}" class="form-control"> </div> </div> <div class="form-group row"> <label class="col-sm-2 col-form-label">年龄:</label> <div class="col-sm-10"> <input type="text" name="page" value="{{ pe.age }}" class="form-control"> </div> </div> <div class="form-group row"> <label class="col-sm-2 col-form-label">手机:</label> <div class="col-sm-10"> <input type="text" name="pphone" value="{{ pe.phone.phonename }}" class="form-control"> </div> </div> <div class="form-group row"> <label class="col-sm-2 col-form-label">价格:</label> <div class="col-sm-10"> <input type="text" name="pprice" value="{{ pe.phone.price }}" class="form-control"> </div> </div> <div class="form-group " style="text-align: right"> <button type="submit" class="btn btn-primary">修改</button> </div> </form> </div> <div class="col"></div> </div>{% endblock %}
获取一条数据的实际效果图:
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除