默认提供的bulk_save_objects是在一次事务中提交多次save 需求:一个sql语句插入多个实体 直接上代码 models.py from sqlalchemy import (Column..., String, DateTime, UnicodeText, BigInteger, Boolean, Integer, Text, Float) from sqlalchemy import TypeDecorator...from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class People(Base...__table__.insert(dict_list)) session.commit() 这里有个巨大的坑,如果people中任何一个实体没有某个字段,则即使其他实体有该字段也无法将该值插入到数据库中...= "bobby1" people2 = People() people2.name = "bobby1" people2.age = 3 #注意people1没有设置age字段, 则在批量插入的时候
1.今天遇到一个问题如果输入的是字符串还是整数或者是小数如何将他们区分 首先isdigit()只能用来判断字符串输入的是否是整数,无法判断是否是小数 所以,先判断该字符串是否是整数,如果是返回3, ...不是的话说明是字母或者是小数,然后判断是否是小数,如果是小数的话返回1, 是字母的或其他的话返回2 def is_float(i): if i.isdigit():#只能用来判断整数的字符串...if right.isdigit(): # 如果小数点右边是数字判断小数点左边 if left.isdigit(): # 如果小数点左边没有-直接返回 ...new_left = left.split('-')[-1] # 判断去掉后的还是不是数字 if new_left.isdigit(): # 是数字则返回True...():#如果小数点右边是数字判断小数点左边 if left.isdigit():#如果小数点左边没有-直接返回 return
BigDecimal的加法源码如下,都是有返回值的。...a=a.add(b); 减乘除操作也是一样的返回一个新的BigDecimal对象。...值为122 long ys = augend.intCompact;//同上 //初始化BigInteger的值,intVal为BigDecimal的一个BigInteger类型的属性...= 0) {//取小数位数多的为结果的小数位数 if (sdiff < 0) { int raise =checkScale(-sdiff); rscale...(ys); BigInteger sum =fst.add(snd); //返回通过其他构造方法得到的BigDecimal对象 return (fst.signum == snd.signum
' db.session.commit() if name == 'main': app.run() ---- 3、常用列 db.Integer SmallInteger BigInteger...lazy select,immediate,joined,subquery,noload,dynamic uselist 是否使用列表 order_by secondary secondaryjoin...first() 返回查询的第一个结果,如果没有结果,则返回None first_or_404() 返回查询的第一个结果,如果没有结果,则终止请求,返回404 错误响应 get() 返回指定主键对应的行...,如果没有对应的行,则返回None get_or_404() 返回指定主键对应的行,如果没找到指定的主键,则终止请求,返回404 错误响应 count() 返回查询结果的数量 paginate()...返回一个Paginate 对象,它包含指定范围内的结果 6、 ?
manager.add_command("shell", Shell(make_context=make_shell_context)) 3、常用列 db.Integer SmallInteger BigInteger...lazy select,immediate,joined,subquery,noload,dynamic uselist 是否使用列表 order_by secondary secondaryjoin...first() 返回查询的第一个结果,如果没有结果,则返回None first_or_404() 返回查询的第一个结果,如果没有结果,则终止请求,返回404 错误响应 get() 返回指定主键对应的行...,如果没有对应的行,则返回None get_or_404() 返回指定主键对应的行,如果没找到指定的主键,则终止请求,返回404 错误响应 count() 返回查询结果的数量 paginate()...返回一个Paginate 对象,它包含指定范围内的结果 6、 ?
默认为fail index:是否将df的index单独写到一列中 index_label:指定列作为df的index输出,此时index为True chunksize: 同read_sql dtype:...dtype={'EMP_ID': sqlalchemy.types.BigInteger(), 'GENDER': sqlalchemy.types.String(length...': sqlalchemy.types.String(length=50), 'NR_OF_CHILDREN': sqlalchemy.types.BigInteger...TABLE emp_backup ADD PRIMARY KEY (`EMP_ID`);') 3.5 left / right/inner Join 连接 其中包括: left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录...right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner join(等值连接) 只返回两个表中联结字段相等的行 select * from A innerjoin
前言 在查询的时候,经常需要先判断是否存在结果,再进行下一步操作。...这里总结了判断查询结果是否存在的几种方式 count() 统计个数 count()方法返回记录条数,使用示例 with app.app_context(): count = Students.query.filter...,返回该对象 当查询结果为不止一个时,抛异常sqlalchemy.exc.MultipleResultsFound...,如果没有结果返回None 如果有一个或多个结果返回第一个值,不会抛异常,所以用first()判断是否有结果也很方便 with app.app_context(): obj = Students.query.filter...,返回的是一个list 如果没查询到数据,返回空的list[] 查询到结果返回list of obj 格式[]
前言 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据...Sqlalchemy 就是一种 ORM 框架 每个表会对应一个 Model 类,这些 Model 类都需要继承一个名为 declarative base class 的基类。...详细操作 1.1 建表 在 SQLAlchemy 中,以 ORM 方式定义表有两种方法,分别是 Classical 和 Declarative,Flask-Sqlalchemy主要使用的是 Declarative..., primary_key=True) # ABCProductLibrary/ABCBehaviour id target_id = Column(BigInteger, default...如何理解ORM sqlalchemy学习(四)ORM model及数据库表的增删改查 Flask-SQLAlchemy源码学习
该类中除了基本的加减乘除,还提供了绝对值,相反数,最大公约数以及判断是否为质数。 BigInteger类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字。...compareTo(BigInteger val) 做数字比较操作 public boolean equals(Object x) 当参数x是BigInteger类型的数字并且数值相等时,返回true...public BigInteger main(BigInteger val) 返回较小的数值 public BigInteger max(BigInteger val) 返回较大的数值 2.BigDecimal...相对于BigInteger,BigDecimal加入了小数的概念,该类支持任意精度的定点数。...,近似处理模式 相对于加减乘除来说,除法是其中最复杂了,很大情况下是除不尽的,所以,针对除法,divide()有多种设置,用于返回商末位小数点的处理,如下表: 模式 含义 BigDeciaml.ROUND_UP
这两天在学习函数,练习写一个判断是否为小数的函数,看起来蛮简单的,飞速写完很是得意,然后测了一下,发现差得好多呀,这个并不像想象那样简单,我得到的教训是,想要把一个需求哪怕再小的需求考虑周全,都不是件简单的事...if s.count('.') == 1: # 小数的首要前提就是有且只有一个小数点。...,是个合法的负小数 return True return False # 除了以上正小数和负小数两种合法的情况外,其它均是不合法情况,上边的判断路线也走不进去...,直接返回False结束。...# 而当符合上面的任何条件都会判断是合法小数,返回True结束程序,也走不到最后的return False这个语句。 # 所以不用看到程序最后一句是 return False 而担心。
: BigInteger 任意大的整数,原则上是,只要你的计算机的内存足够大,可以有无限位的 BigDecimal 任意大的实数,可以处理小数精度问题。...compareTo:根据该数值是小于、等于、或大于 val 返回 -1、0 或 1; equals:判断两数是否相等,也可以用compareTo来代替; min,max:取两个数的较小、大者; intValue...java.math是一个包,提供用于执行任意精度整数(BigInteger)算法和任意精度小数(BigDecimal)算法的类。 ...public void setMinimumFractionDigits(int newValue)//设置数的小数部分所允许的最小位数。 ...BigInteger类、BigDecimal类: java.math包中的BigInteger类和BigDecimal类分别提供任意精度的整数和小数运算。
零值的精度是 1 BigInteger unscaledValue() 返回其值为此 BigDecimal 的非标度值 的 BigInteger 四则运算 除非结果准确,每种运算都有一个表示结果的首选标度...BigDecimal 对象(如,2.0 和 2.00)被认为是相等的 注意:与equals中的相等含义不同小于、等于或大于 val 时,返回 -1、0 或 1 equals 判断是否相等...的小数部分 如果生成的 "BigInteger" 太大 仅返回 64 位低位字节 此转换会丢失关于此 BigDecimal 值的总大小和精度的信息 floatValue...BigInteger toBigIntegerExact()转换为 BigInteger如果此 BigDecimal 具有非零小数部分,则抛出一个异常 exact版本的区别就在于是否能够准确转换,否则抛出异常...移动小数点 movePointLeft该值的小数点向左移动 n 位如果 n 为负数,则该调用等效于 movePointRight(-n)如果 n 为非负数,则调用仅将 n 添加到该标度返回的值和标度分别为
它存储在你必须创建的 SQLAlchemy 实例上。...的Model类 app.config的两个,一个是连接数据库的,跟平常的SQLAlchemy表示的一样,一个是是否可以跟踪修改,一般是True __tablename__来作为表的名称 db.Column...来创建表头,db中有很多类型,比如String、Integer、Text、Datetime等 primary_key来设置主键 nullable表示是否可以为空 要有一个__repr__函数,来返回呈现一个值...star = db.Column(db.SmallInteger) # 电影的星级 playnum = db.Column(db.BigInteger) # 电影播放量 commentnum...= db.Column(db.BigInteger) # 电影的评论量 tag_id = db.Column(db.Integer, db.ForeignKey('tag.id')) #
(int)(Math.random()*n) :返回大于等于0且小于n的随机数 m+(int)(Math.random()*n):返回大于等于m且小于m+n的随机数 使用Math类的random()方法也可以随机生成字符...cha1+1)) 注:random()方法返回的值实际上是伪随机数,它通过复杂的运算而得到一系列的数,该方法是通过当前时间作为随机数生成器的参数,所以每次执行程序都会产生不同的随机数。...这两个类用于高精度计算,其中BigInteger类是针对大整数的处理类,而BigDecimal类则是针对大小数的处理类。...在BigInteger类中封装了多种操作,除了基本的加、减、乘、除操作之外,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作。...8.4.2 BigDecimal BigDecimal和BigInteger都能实现大数字的运算,不同的是BigDecimal加入了小数的概念,BigDecimal类支持任意精度的定点数,可以用它来精确计算货币值
(int exponent) :计算幂 BigInteger remainder(BigInteger val):计算余数 BigInteger max(BigInteger val):返回较大值 BigInteger...min(BigInteger val):返回较小值 BigDecimal类 java.math.BigDecimal 类提供用于算术,刻度操作,舍入,比较,哈希算法和格式转换操作。...该类的使用范围是小数运算。我们都知道Java的float和double是浮点数,直接进行比较操作、运算操作都会有误差,BigDecimal就不会出现这种情况。...toString()方法提供BigDecimal的规范表示。它使用户可以完全控制舍入行为。提供用于操作BigDecimal规模两种类型的操作: 缩放/舍入操作 小数点移动操作。...日常Coding中我还没用到过这个类,需要使用的时候再查看文档吧。不过这个类的使用方法应该和BigInteger类类似,只不过支持小数操作,在方法头中会多一些形参来控制精度或其他控制。
它存储在你必须创建的 SQLAlchemy 实例上。...的Model类 app.config的两个,一个是连接数据库的,跟平常的SQLAlchemy表示的一样,一个是是否可以跟踪修改,一般是True __tablename__='xxx'来作为表的名称 db.Column...来创建表头,db中有很多类型,比如String、Integer、Text、Datetime等 primary_key来设置主键 nullable表示是否可以为空 要有一个repr函数,来返回呈现一个值...star = db.Column(db.SmallInteger) # 电影的星级 playnum = db.Column(db.BigInteger) # 电影播放量 commentnum...= db.Column(db.BigInteger) # 电影的评论量 tag_id = db.Column(db.Integer, db.ForeignKey('tag.id')) #
它存储在你必须创建的 SQLAlchemy 实例上。...的Model类 app.config的两个,一个是连接数据库的,跟平常的SQLAlchemy表示的一样,一个是是否可以跟踪修改,一般是True __tablename__来作为表的名称 db.Column...来创建表头,db中有很多类型,比如String、Integer、Text、Datetime等 primary_key来设置主键 nullable表示是否可以为空 要有一个__repr__函数,来返回呈现一个值...star = db.Column(db.SmallInteger) # 电影的星级 playnum = db.Column(db.BigInteger) # 电影播放量 commentnum...= db.Column(db.BigInteger) # 电影的评论量 tag_id = db.Column(db.Integer, db.ForeignKey('tag.id')) # 电影所属标签
round() 方法 四舍五入,返回最接近int值的参数 public static int round(float a) abs() 方法 返回绝对值 public static double abs...BigDecimal(double val) ; Math.round()方法虽然实现四舍五入操作,但是,小数在计算的时候会自动的四舍五入 除法操作 public BigDecimal divide...(BigDecimal divisor , int scale , int round); BigDecimal divsor : 被除数 int scale:保留的小数位 int round...num 进行四舍五入操作的数字 * @param scale 要保留的小数位数 * @return 处理后的数据 */ public static double round(double...Random类生成随机数 如果处理大量的数据量,则使用 BigInteger和BigDecimal ,两个类都属于Number的子类
[TOC] Flask 模型: Flask 默认并没有提供任何数据库操作的API,我们可以选择任何合适自己项目的数据库来使用,可以采用原生的语句实现也可以采用ORM框架(SQLAlchemy / MongoEngine...4.移植性好 SQLAlchemy 连接流程: 1.指定数据库配置app.config['SQLALCHEMY_DATABASE_URI']=DB_URI以及禁止对象追踪修改app.config['SQLALCHEMY_TRAKE_MODIFICATIONS...']=False 2.通过懒加载的方式初始化SQLalchemy()扩展; 3.数据库的使用创建模型class Person(db.model) 4.数据库操作 创建数据库: db.create_all...Student对象主键数据否则None Student.query.get_or_404(主键索引) # 找寻到返回数据否则返回404 Student.query.all()...DATETIME SQLAlchemy 字段类型: Numeric # 1.实际上都是整型的只是继承后然后改改名称不同而已; Integer SmallInteger BigInteger #2
一、配置数据库 1、安装扩展库 安装pymysql扩展库 pip install pymysql 安装flask-sqlalchemy扩展库 pip install flask-sqlalchemy...db.init_app(app) 二、设计模型 1、常见字段类型 类型名 python类型 说明 Integer int 存储整形 32位 SmallInteger int 小整形 16位 BigInteger...默认False unique 是否设置唯一索引 默认False index 是否设置为常规索引 默认False nullable 是否可以为空 默认True default 设置默认值 3、常用的SQLAlchemy...指定关系中记录的排序方式 secondary 指定多对多中记录的排序方式 secondary join 在SQLAlchemy中无法自行决定时,指定多对多关系中的二级联结条件 4、修改数据库中的表名...models包 3、模型、属性、表之间的关联 一个模型类 对应数据库中的一张表 一个类属性 对应 表中的一个字段 4、创建用户表模型 <span class
领取专属 10元无门槛券
手把手带您无忧上云