使用flask-sqlalchemy创建一对多的关系表
来源:互联网 发布:f.lux for mac下载 编辑:程序博客网 时间:2024/04/27 18:44
本案例中是一个用户注册的案例,其中涉及到兴趣爱好这个复选框的,处理方式就是创建一个兴趣爱好表,使用户表(一)对兴趣爱好表(多)的方式存储
index.html
代码
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>用户注册</title> <link rel="stylesheet" href="{{ url_for('static',filename='./css/bootstrap.css') }}"></head><body><div class="container"> <div class="col-md-5"> <form role="form" action="" method="post"> <fieldset> <legend class="text-center text-primary">用户注册页面</legend> <div class="form-group"> <label>用户名:</label> <input type="text" name="name" placeholder="请输入用户名" class="form-control"/> </div> <div class="form-group"> <label>密码:</label> <input type="text" name="password" placeholder="请输入密码" class="form-control"/> </div> <div class="form-group"> <label>选择你的性别:</label> <div> <label class="checkbox-inline" style="padding-left: 0;"> <input type="radio" name="sex" value="男"> 男 </label> <label class="checkbox-inline" style="padding-left: 0;"> <input type="radio" name="sex" value="女"> 女 </label> </div> </div> <div class="form-group"> <label for="">选择你的兴趣爱好:</label> <div> <label class="checkbox-inline"> <input type="checkbox" name="hobby" value="学习"/> 学习 </label> <label class="checkbox-inline"> <input type="checkbox" name="hobby" value="美女"/> 妹子 </label> <label class="checkbox-inline"> <input type="checkbox" name="hobby" value="游戏"/> 游戏 </label> <label class="checkbox-inline"> <input type="checkbox" name="hobby" value="电话"/> 电视 </label> </div> </div> <div class="form-group"> <label>请选择省份:</label> <select class="form-control" name="province"> <option value="广东省">广东省</option> <option value="湖南省">湖南省</option> <option value="广西省">广西省</option> <option value="福建省">福建省</option> </select> </div> <div class="form-group"> <input type="submit" value="注册" class="btn btn-primary"/> </div> </fieldset> </form> </div></div></body></html>
python代码
#coding:utf-8;from flask import Flask,render_templateimport flaskfrom flask_sqlalchemy import SQLAlchemyimport configapp = Flask(__name__)app.debug = True#添加配置文件app.config.from_object(config)#创建flask-sqlalchemy与flask的关于db = SQLAlchemy(app)#创建用户的模型class AddUser(db.Model): __tablename__ = "add_user" user_id = db.Column(db.Integer,primary_key=True,autoincrement=True) user_name = db.Column(db.String(100)) user_password = db.Column(db.String(100)) user_sex = db.Column(db.String(50)) user_province = db.Column(db.String(100))"""由于兴趣爱好是多选的,那么就创建一个用户与兴趣爱好的一对多的关系表"""class Hobby(db.Model): hobby_id = db.Column(db.Integer,primary_key=True,autoincrement=True) hobby_name = db.Column(db.String(100)) #创建一个外键,类型要跟主表一样的,通过db.ForeignKey("add_user.user_id")与主表绑定 user_id = db.Column(db.Integer,db.ForeignKey("add_user.user_id")) #user表示可以根据Hobby中的兴趣爱好查找到用户表中的信息,backref="hobbys"表示用户表可以直接通过hobbys查找到该用户下的兴趣爱好 user = db.relationship("AddUser",backref="hobbys")#创建表db.create_all()@app.route('/',methods=["GET","POST"])def index(): if flask.request.method == "GET": return render_template("index.html") else: #获取用户输入信息 name = flask.request.form.get('name') password = flask.request.form.get('password') sex = flask.request.form.get('sex') hobby = flask.request.form.getlist('hobby') province = flask.request.form.get('province') #先查询是否有该用户 search_user = db.session.query(AddUser).filter(AddUser.user_name == name).first() print name, password, sex, hobby, province,search_user if search_user: return u'用户已经注册,不能重复注册' else: search_user = AddUser(user_name=name, user_password=password, user_sex=sex, user_province=province) for item in hobby: hobby = Hobby(hobby_name=item) hobby.user = search_user db.session.add(hobby) db.session.commit() return u'注册成功'if __name__ == '__main__': app.run()
config.py
配置文件代码
#coding:utf8DB_URI = "mysql+mysqldb://root:root@localhost:3306/python-demo?charset=utf8"SQLALCHEMY_DATABASE_URI = DB_URISQLALCHEMY_TRACK_MODIFICATION = False
补充说明
- 我们可以在创建数据后跳转到查看刚刚创建数据信息,涉及到查询数据的问题
user_info.html
页面
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>用户注册信息表</title> <link rel="stylesheet" href="{{ url_for('static',filename='./css/bootstrap.css') }}"></head><body><div class="container"> <table class="table table-striped"> <thead> <tr> <th>No.</th> <th>用户名</th> <th>密码</th> <th>性别</th> <th>兴趣爱好</th> <th>省份</th> </tr> </thead> <tbody> <tr> <td>{{ user.user_id }}</td> <td>{{ user.user_name }}</td> <td>{{ user.user_password }}</td> <td>{{ user.user_sex }}</td> <td> {% for item in hobby%} <span>{{ item.hobby_name }}</span>, {% endfor %} </td> <td>{{ user.user_province }}</td> </tr> </tbody> </table></div></body></html>
新增一个视图路由
@app.route("/user_info/<string:username>")def user_info(username): print username user = db.session.query(AddUser).filter(AddUser.user_name == username).first() # 根据查找的用户id去查找兴趣爱好 dataSet = { "user":user, "hobby":user.hobbys } return render_template('user_info.html',**dataSet)
修改下上面的index路由页面
重定向到新的页面上return redirect(url_for('user_info',username=name))
0 0
- 使用flask-sqlalchemy创建一对多的关系表
- sqlalchemy一对多的关系表案例
- flask-SQLAlchemy一些使用技巧(关联关系的创建)
- sqlalchemy 的一对多关系
- sqlalchemy 一对多关系
- flask-sqlAlchemy 创建表
- Flask-SQLAlchemy 配置,处理对象-关系,一对多,多对多,
- flask-sqlalchemy不同的关系的实例
- Flask-SQLAlchemy创建模型与表的映射
- Flask-sqlalchemy多对多关系
- Flask-SQLAlchemy使用方式
- Flask+SQLAlchemy入门使用
- Flask中使用Mysql的几点记录 / flask-sqlalchemy
- Flask系列教程(二)--------------使用SQLAlchemy创建数据模型
- 使用JPA的建立一对多关系
- mybatis一对多关系 collection的使用
- flask sqlalchemy wtf 使用笔记
- Flask-SQLAlchemy使用问题记录
- 【复习linux的使用】(四)——权限/进程
- 不同的梯度下降算法
- 【Java NIO的深入研究6】JAVA NIO之Scatter-Gather
- IE浏览器拖放事件e.dataTransfer.setData(key,value)报错
- SSM框架搭建及源码解析--spring容器Bean的注册(二)
- 使用flask-sqlalchemy创建一对多的关系表
- 购物车
- WOW! Cool X-Men Slot Game in Newtown Casino
- 更改Linux终端中用户名的显示颜色
- Surface、SurfaceView、SurfaceHolder详解
- 三天打鱼两天晒网
- 计算机是如何启动的?
- 怎么分析内存泄露
- 选择排序