Flask 入门(九)
外键数据库
我们想想,所有的数据不可能这么简单,万一建的数据库有了外键呢?如何增加,如何查询?
承接上文:
先登录mysql数据库,把里面的表和数据都删了
执行语句:
use data
select * from users
select * from dogs
发现是空的
然后修改main.py中的代码如下:
#encoding:utf-8
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://root:005@127.0.0.1:3306/data'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False
app.config['JSON_AS_ASCII']=False
db = SQLAlchemy(app)
db = SQLAlchemy(use_native_unicode='utf8')
class Users(db.Model):
__tablename__='users'
id=db.Column(db.Integer,primary_key=True,autoincrement=True)
name=db.Column(db.String(20),nullable=False)
class Dogs(db.Model):
__tablename__='dogs'
id=db.Column(db.Integer,primary_key=True,autoincrement=True)
name=db.Column(db.String(20),nullable=False)
master_id=db.Column(db.Integer,db.ForeignKey('users.id'))
@app.route('/')
def index():
db.create_all()
return '欢迎登录'
@app.route('/adduser/')
def addusers():
user1=Users(name='huhai')
user2=Users(name='lanyue')
db.session.add(user1)
db.session.add(user2)
db.session.commit()
return '添加成功!'
@app.route('/adddogs/')
def adddogs():
dog1=Dogs(name='gou1',master_id=1)
dog2=Dogs(name='gou2',master_id=2)
dog3=Dogs(name="gou2",master_id=1)
dog4=Dogs(name="gou1",master_id=2)
db.session.add(dog1)
db.session.add(dog2)
db.session.add(dog3)
db.session.add(dog4)
db.session.commit()
return '添加成功!'
@app.route('/find_master/<int:dog_id>/')
def find_master(dog_id):
dog=Dogs.query.filter(Dogs.id==dog_id).first()
user_id=dog.master_id;
user=Users.query.filter(Users.id==user_id).first()
return user.name
if __name__=='__main__':
app.run(debug=True)
打开浏览器,先后输入
127.0.0.1:5000/adduser/
回车
127.0.0.1:5000/adddogs/
回车
再次执行上面数据库的命令,结果如下:
打开浏览器,输入
127.0.0.1:5000/find_master/2/
结果如下:
哦耶!
Flask 入门(九)的更多相关文章
- Flask入门笔记(一)
一.程序的基本结构 1.1 最简单的Flask程序 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #coding=utf-8 # 初始化 from flask import Fla ...
- Flask入门HelloWorld
Flask入门HelloWorld Flask官网:http://flask.pocoo.org/ Flask中文翻译:http://dormousehole.readthedocs.io/en/la ...
- Flask入门之结构重组(瘦身)-第13讲笔记
1. pip list Flask 0.10.1 Flask-Bootstrap 3.3.5.6 Flask-SQLAlchemy 2 Flask-Script 2.0.5 Flask-WTF 0.1 ...
- Flask入门之Bootstrap介绍使用和Flask-Nav快速导航栏
一.Bootstrap Bootstrap,来自 Twitter,是目前最受欢迎的前端框架. Python中,同样可以使用Bootstrap. 1. 导入Bootstrap库 from flask_b ...
- Flask入门之Pycharm写Hello Word
在这里记录整理Flask入门的笔记! 今天讲讲使用Pycharm写一个Hello World 前提是已经安装好Pycharm,安装过程很简单,这里不赘述. 只放两个可以提供注册码的网站: Intell ...
- 网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?
1.前言 标题虽然是为了解释有了 IP 地址,为什么还要用 MAC 地址,但是本文的重点在于理解为什么要有 IP 这样的东西.本文对读者的定位是知道 MAC 地址是什么,IP 地址是什么. (本文同步 ...
- Flask入门和快速上手
目录 Flask入门和快速上手 python三大主流框架对比 Flask安装 依赖 可选依赖 创建flask项目 flask最小应用--hello word 非法导入名称 调试模式 路由 唯一的 UR ...
- Flask 入门一( flask 框架和 flask-script 库)
Flask 入门一( flask 框架 和 flask-script 库) 一.Flask框架: 1.简介 Flask是一个非常小的Python Web框架,被称为微型框架:只提供了一个稳健的核心,其 ...
- C#基础入门 九
C#基础入门 九 集合 对于很多应用程序,需要创建和管理相关对象组,有两种方式可以将对象分组,一是创建对象数组,如 object[] obj=new object[3]{1,2.33,"st ...
- cesium编程入门(九)实体 Entity
cesium编程入门(九)实体 Entity 在cesium编程入门(五)绘制形状提到过添加实体的方法,这一节聊一聊实体相关的一些内容: 先来看 Entity 的各个属性 id 唯一标志,如果没设置, ...
随机推荐
- vue基础----组件通信($parent,$children)
1.按照dom的父子级关系,在子组件中可以通过$parent 直接调用父组件的方法,也可得到父组件的属性. 2.在父组件中通过$childrens可以得到一个子组件数组,能够在父组件中调用子组件的方法 ...
- vue-router需要注意的点
1.在编程式导航中,如果提供了path,params会被忽略:需要提供name,或手写完整的带有参数的path;以下写法可取: const userId = '123'; 1.this.$route ...
- Echart饼形图和折线图的循环展示及选择展示
需求:根据不同的入参调同一接口,循环展示一组饼形图或折线图: 主要问题:在于给定的数据格式不符合图表的配置项格式,需要拆分组装数据:首先默认展示几个图表,当选中一个类别,需要展示其中一个的时候,页面中 ...
- 建议8:恰当选用if和switch
相对来说下面几种情况更适合switch结构 枚举表达式的值.这种枚举是可以期望的,平行逻辑关系的 表达式的值具有离散性,不具有线性的非连续的区间值 表达式的值是固定的,不是动态变化的 表达式的值是有限 ...
- iconfont字体图标的使用方法(转)
我之前因为项目用bootstrap比较多,所以使用font awesome字体图标比较多,后来接触到了iconfont,发现想要的什么图标都有,还可以自定义图标,非常强大!之前看了一波教程,觉得繁琐, ...
- 为了弄懂Flutter的状态管理, 我用10种方法改造了counter app
为了弄懂Flutter的状态管理, 我用10种方法改造了counter app 本文通过改造flutter的counter app, 展示不同的状态管理方法的用法. 可以直接去demo地址看代码: h ...
- 网络安全从入门到精通 ( 第二章-5) 后端基础PHP—简介及基本函数-下
本文内容: 循环语句 PHP获取表单信息 PHP操作Mysql语句 语法SQL注入 1,循环语句: for循环: 语法:for($x=0,$x<10;$x++){执行语句;} 注意:$x++,先 ...
- Jenkins+Ant+JMeter报告自动化
1.参考Jenkins+Ant+JMeter集成,安装Jenkins(不需要安装Performance Plugin插件),建立Slave节点,连接Slave节点,创建任务等. 2.将Jenkins+ ...
- [前端开发]Vue父子组件的通信及访问
父传子 props 子传父 自定义事件emit props传数组 props:['cmovies','cmessage'] props传对象 props:{ //1.类型限制 cmovies:Arra ...
- 108. Convert Sorted Array to Binary Search [Python]
108. Convert Sorted Array to Binary Search Given an array where elements are sorted in ascending ord ...