创建表对应关系代码如下:

from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy app=Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']="mysql://root:123456@127.0.0.1:3306/rupeng"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False db=SQLAlchemy(app) # 角色 1的一方
class Role(db.Model):
__tablename__="role"
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(20),unique=True)
# backref在这行代码的作用是:给前面的User添加一个属性,名字叫做backref的值
# 以便可以直接通过user.role方法到一的一方的数据
users=db.relationship("User",backref="role")
def __repr__(self):
return "%d,%s" %(self.id,self.name) # 用户 多的一方
class User(db.Model):
__tablename__="users"
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(64),unique=True)
email=db.Column(db.String(64),unique=True)
password=db.Column(db.String(64))
# 设置外键 ,为了能够直接查询出一的一方的数据
role_id=db.Column(db.Integer,db.ForeignKey(Role.id)) def __repr__(self):
return "%d %s" %(self.id,self.name) @app.route("/")
def index():
return "index" if __name__ == '__main__':
db.drop_all()
db.create_all() ro1 = Role(name='admin')
db.session.add(ro1)
db.session.commit()
# 再次插入一条数据
ro2 = Role(name='user')
db.session.add(ro2)
db.session.commit() us1 = User(name='wang', email='wang@163.com', password='', role_id=ro1.id)
us2 = User(name='zhang', email='zhang@189.com', password='', role_id=ro2.id)
us3 = User(name='chen', email='chen@126.com', password='', role_id=ro2.id)
us4 = User(name='zhou', email='zhou@163.com', password='', role_id=ro1.id)
us5 = User(name='tang', email='tang@itheima.com', password='', role_id=ro2.id)
us6 = User(name='wu', email='wu@gmail.com', password='', role_id=ro2.id)
us7 = User(name='qian', email='qian@gmail.com', password='', role_id=ro1.id)
us8 = User(name='liu', email='liu@itheima.com', password='', role_id=ro1.id)
us9 = User(name='li', email='li@163.com', password='', role_id=ro2.id)
us10 = User(name='sun', email='sun@163.com', password='', role_id=ro2.id)
db.session.add_all([us1, us2, us3, us4, us5, us6, us7, us8, us9, us10])
db.session.commit() app.run(debug=True)

查询语句如下:

"""
查询所有用户数据
User.query.all() 查询有多少个用户
User.query.count() 查询第1个用户
User.query.first() 查询id为4的用户[3种方式]
User.query.get(4)
User.query.filter_by(id=4).first()
User.query.filter(User.id==4).first() 查询名字结尾字符为g的所有数据[开始/包含]
User.query.filter(User.name.endswith('g')).all()
User.query.filter(User.name.contains('g')).all()
User.query.filter(User.name.startswith('g')).all() 查询名字不等于wang的所有数据[2种方式]
第一种方式:导入from sqlalchemy import not_
User.query.filter(not_(User.name=='wang')).all()
第二种方式:User.query.filter(User.name!='wang').all() 查询名字和邮箱都以 li 开头的所有数据[2种方式]
第一种方式:User.query.filter(User.name.startswith('li'),User.email.startswith('li')).all()
第二种方式:导入:from sqlalchemy import and_
User.query.filter(and_(User.name.startswith('li'),User.name.startswith('li'))).all() 查询password是 `123456` 或者 `email` 以 `itheima.com` 结尾的所有数据
导入:from sqlalchemy import or_
User.query.filter(or_(User.password=='123456',User.email.endswith('itheima.com'))).all() 查询id为 [1, 3, 5, 7, 9] 的用户列表
User.query.filter(User.id.in_([1,3,5,7,9])).all() 查询name为liu的角色数据
User.query.filter(User.name=='liu').first().role 查询所有用户数据,并以邮箱排序
User.query.order_by(User.email).all()或User.query.order_by(User.email.asc()).all()
User.query.order_by(User.email.desc()).all() 每页3个,查询第2页的数据
paginate=User.query.paginate(2,3) 第一个参数表示查询第几页,第二个参数表示煤业查询几个参数
paginate.items
总页数
paginate.pages
当前页
paginate.page
"""

注意:User.query.all() 获取的值可以通过遍历返回的值,然后才能使用模型类的属性

4.ORM框架的查询的更多相关文章

  1. 使用PetaPoco ORM 框架分页查询

    通过在派生的Repository中调用GetPagingEntities方法来获取分页数据,并返回由PagingDataSet<T>封装分页集合,例如: Public PagingData ...

  2. orm框架与缓存的关系

    1.mybatis规定,一级缓存没必要bean类实现序列化,但二级缓存bean类必须实现序列化. 因为二级缓存是基于namespace的也就是基于接口的,二级缓存可以设置存储源,可以是redis或者m ...

  3. ORM框架示例及查询测试,上首页修改版(11种框架)

    继上次ORM之殇,我们需要什么样的ORM框架? 整理了11个ORM框架测试示例,通过示例代码和结果,能很容易了解各种框架的特性,优缺点,排名不分先后 EF PDF XCODE CRL NHiberna ...

  4. python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)

    12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefaul ...

  5. [Android]Android端ORM框架——RapidORM(v2.1)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6020412.html [Android]Android端ORM ...

  6. 轻量级ORM框架——第一篇:Dapper快速学习

    我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db,而且市面上的orm框架有很多,其中有一个框架 叫做dapper,而且被称为th ...

  7. ORM之殇,我们需要什么样的ORM框架?

    最近在研究ORM,究竟什么样的框架才是我们想要的 开发框架的意义在于 开发更标准,更统一,不会因为不同人写的代码不一样 开发效率更高,无需重新造轮子,重复无用的代码,同时简化开发流程 运行效率得到控制 ...

  8. 轻量级ORM框架初探-Dapper与PetaPoco的基本使用

    一.EntityFramework EF是传统的ORM框架,也是一个比较重量级的ORM框架.这里仍然使用EF的原因在于为了突出轻量级ORM框架的性能,所谓有对比才有更优的选择. 1.1 准备一张数据库 ...

  9. [Android]Android端ORM框架——RapidORM(v1.0)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4748077.html  Android上主流的ORM框架有很多 ...

随机推荐

  1. Petr and a Combination Lock

    Petr has just bought a new car. He's just arrived at the most known Petersburg's petrol station to r ...

  2. 8.5-Day1T3--Asm.Def 的一秒

    题目大意 略... (吐槽这题面...让我毫无阅读兴趣) 题解 首先要求出在以两条斜线为新坐标轴下,每个点的坐标 那么....按x先排序 再求y的最长上升子序列 复杂度O(nlogn)吧 记得开lon ...

  3. dfs(学姐的红包)

    链接:https://ac.nowcoder.com/acm/contest/3402/I    盼啊,盼啊,伴随着时钟的敲响,我们即将迎来了美好的传统佳节-春节.为了给新年增添浓浓节日气息,师弟师妹 ...

  4. Java数组和方法

    1. 数组可以作为方法的参数 package cn.itcast.day05.demo04; /* 数组可以作为方法的参数. 当调用方法的时候,向方法的小括号进行传参,传递进去的其实是数组的地址值. ...

  5. 关于React Native init 项目时候速度太慢的解决方法

    因为init项目的时候需要下载资源,但又因为react native的网站被墙所以下载很慢,解决方法就是换成淘宝的NPM镜像 我是直接使用了命令去替换了NPM $ npm install -g cnp ...

  6. 使用 yum 安装 MariaDB 与 MariaDB 的简单配置

    1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB,两条命令都可以 systemctl sta ...

  7. SpringMVC Controller 接收页面传递的中文参数出现乱码

    在Controller中接收到的POST参数如果是中文的话,显示为乱码.已知客户端传过来时编码为UTF-8. 问题产生分析: spring MVC中默认的编码格式为“ISO-8859-1”,因此造成乱 ...

  8. JS中的提升(即变量和函数声明移动到代码顶部)

    先看代码(第一个代码片段): console.log(a); var a = 1; 如果你认为这是一段不合法的代码,在调用console.log()的时候会输出undefined,你完全正确.但是如果 ...

  9. Git - 常用命令, cheatsheet

    git init git add <filename1> <filename2> git add . git checkout -- <filename> git ...

  10. 前端必学---JavaScript数据结构与算法---简介

    前端必学---JavaScript数据结构与算法---简介 1. 数据结构: 数据结构是相互之间存在一种或者多种特定关系的数据元素的集合.---<大话数据结构> 1.1 数据结构的分类 1 ...