首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

年薪20万Python工程师进阶(5):Python ORM框架之 Peewee入门

ORM是什么 之前在学Django时,发现它的模型层非常好用,把对数据库的操作映射成对类、对象的操作,避免了我们直接写在Web项目中SQL语句,当时想,如果这个模型层可以独立出来使用就好了,那我们平台操作数据库也可以这么玩了...后来才知道,原来这个叫ORM(Object Relational Mapping,对象关系映射),在Python下面有很多这样的类库,如SQLObject、Storm、peewee和SQLAlchemy...接下来就是表的创建,创建BaseModel类,在该类下创建子类Meta,Meta是一个内部类,它用于定义peewee的Model类的行为特性。指定dabatase 为 前面定义的db。...ORM用编程语言里的概念帮我们映射了这些东西。 创建 User 和 Tweet类做为表名。在类下面定义的变量为字段名,如username、message、created_date等。...但是,如果你查询Tweet表,就会发现有这个字段,用它来关联User表的id。 image 四、查询数据 接下来,查询数据。

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    (数据科学学习手札120)Python+Dash快速web应用开发——整合数据库

    2.1 创建数据表   利用peewee构建数据表,需要定义相应的Model类,在类中构建的属性即对应表中的字段,并且在Meta类中定义其他的一些属性,譬如下面的例子我们就以最简单的SQLite数据库为例...,不设置则自动根据类名推导 # 创建数据表,若对应数据库中已存在此表,则会跳过 db.create_tables([Model1])   上述的代码在执行之后,便会在关联到的SQLite数据库中创建对应的表...2.2 向表中新增记录   在数据表创建完成之后,我们第一件事当然是要向表中插入数据,这在peewee中操作非常简单: 插入单条数据   在peewee中向表中插入单条记录可以使用create()方法:...2.5 对表中数据进行查询   作为增删改查中使用频次最高的查,在peewee中涉及到的知识内容非常之庞大,但基础的格式都是利用select()方法,常用的有以下方式: # 获取查询结果方式1: query_results...图9   而有关跨表连接等进阶的查询操作,请参考官方文档http://docs.peewee-orm.com/en/latest/peewee/query_examples.html#query-examples

    1.3K20

    纯Python轻松开发在线留言板!

    而在今天的教程中,我就将带大家学习在Dash中利用简单好用的ORM库peewee,快速高效地将数据库整合进Dash应用中。...2.1 创建数据表 利用peewee构建数据表,需要定义相应的Model类,在类中构建的属性即对应表中的字段,并且在Meta类中定义其他的一些属性,譬如下面的例子我们就以最简单的SQLite数据库为例:...,不设置则自动根据类名推导 # 创建数据表,若对应数据库中已存在此表,则会跳过 db.create_tables([Model1]) 上述的代码在执行之后,便会在关联到的SQLite数据库中创建对应的表...2.2 向表中新增记录 在数据表创建完成之后,我们第一件事当然是要向表中插入数据,这在peewee中操作非常简单: 「插入单条数据」 在peewee中向表中插入单条记录可以使用create()方法: #...2.5 对表中数据进行查询 作为「增删改查」中使用频次最高的「查」,在peewee中涉及到的知识内容非常之庞大,但基础的格式都是利用select()方法,常用的有以下方式: # 获取查询结果方式1: query_results

    1.7K40

    Python流行orm框架对比

    Django ORM:作为Django框架的内置ORM,它遵循“约定优于配置”的原则,提供对象到数据库表的映射。...Peewee:这是一个轻量级的ORM,学习成本低,支持事务、连接池和常用数据库。Peewee提供简单的查询API,适合小型项目。...Django ORM适合快速开发Web应用,不需要额外安装,内置于Django框架中,非常适合初学者。 Peewee:Peewee是一个轻量级的ORM框架,使用简单,适合小型项目或快速开发原型。...自动化功能,如自动生成数据库表结构、迁移等功能,降低了数据库配置的复杂性。简单易用,对于常规的增删改查操作,API使用非常直观。缺点是灵活性不足,复杂查询时可能会受到约束。...Peewee: 轻量级,代码量少,依赖简单,适合快速开发和小型项目。易学易用,API设计直观,易于理解和使用,文档全面。灵活性适中,支持基本的查询功能,并允许进行较为复杂的查询。

    18910

    经验拾忆(纯手工)=> Python-

    安装和导入 pip install peewee from peewee import * # peewee的模块很结构化,都在peewee中,如果懒就都导入进来。...表-记录-字段 ORM语法 和 数据库的 (表-记录-字段)对应关系如下: ORM结构 数据库 类 表 实例(对象) 记录 类属性 列 默认自增主键ID 定义一个类,继承了peewee模块的Model...不然它不知道你这个表在哪个数据库 既然这样,若我们要在一个数据库中创建很多很多表,那岂不是每次都需要给每张表指定一个数据库??...表改名: 注:我说的改名只是查询时的临时名 下一篇文章查询,会提到 字段改名, 格式: 字段.alias('新字段名') 那表改名也差不多,有2种方式: 方式1: 格式: 表类....alias('新表名') 方式2: 格式: 新表名 = 表类.alias() 未结束语 本篇写了一些入门性的模型的建立,数据库,事务,索引,算是比较基本的。

    1.5K10

    2017年Python 开发者应该关注的 7 个类库

    Zappa 同样也是很快的,可扩展的。 #4 Peewee Peewee 是 Python 生态中简单的,富有表现力的 ORM ,它支持 SQLite,MySQL 和 PostgreSQL。...数据库经常需要为应用去使用扩展的数据。不过,通过 ad hoc 连接串去 get 和 set 数据库中的数据是一项非常有挑战的任务。这种情况下,Peewee 就可以帮很大的忙了。...点击这里学习如何在 Peewee 中创建一个数据库 #5 Sanic + uvloop Sanic 是一个与 Flask 类似,基于 uvloop 的 web 框架,它能让 Python 更快速。...Bokeh 也可以和 Jupyter Notebooks 很好的结合来用于研究领域。 #7 Blaze Blaze 用于处理数据库和分析查询的阵列技术。...然而,理解每一个系统如何工作以及如何将数据整理成合适的形式是一个非常有挑战性的工作。由于缺乏对于如何在新技术之间混合和迁移数据的认识,从数据分析中攫取有效的结论将是非常困难的。

    1.7K90

    Python 连接 MySQL 的几种方法

    开发、亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Python 操作 MySQL 的几种方式,你可以在实际开发过程中根据实际情况合理选择。...写原生 SQL 的过程非常繁琐,代码重复,没有面向对象思维,继而诞生了很多封装 wrapper 包和 ORM 框架,ORM 是 Python 对象与数据库关系表的一种映射关系,有了 ORM 你不再需要写...提高了写代码的速度,同时兼容多种数据库系统,如sqlite, mysql、postgresql,付出的代价可能就是性能上的一些损失。...如果你对 Django 自带的 ORM 熟悉的话,那么 peewee的学习成本几乎为零。它是 Python 中是最流行的 ORM 框架。...Java 中的 Hibernate 框架。

    4.4K40

    高质量代码-智慧城市GIS平台后端代码

    《高质量代码-智慧城市GIS平台数据表设计》一文介绍了项目中的数据库表设计。此文介绍优良合理的表设计给后端接口开发带来的便利性。...整个后端使用Python语言开发,tornado作为web框架,peewee作为ORM和数据库打交道。下面展示利用peewee操作数据库(读取)是多么的简单。...使用peewee定义表,注意ForeignKeyField和backref的用法 # -*- coding:utf-8 -*- from peewee import * from datetime import...#查询所有流量监测站监测到的最新的电压数据,并关联地理站点表方便地图展示。...耐心看每个过程的使用,为了将数据转化为geojson中的feature,而且要将表中最终Data表数据转化为feature["properties"],即[{'meterName':'Pressure'

    1.4K80

    Flask-RESTful数据模型的设计和实现

    数据模型设计模式在设计数据模型时,常见的设计模式有三种:单表模式单表模式是最简单的数据模型设计模式。它将所有相关的数据存储在一个表中。这个模式适用于数据之间的关系比较简单的情况下。...例如,在一个电子商务网站上,一个订单可以有多个产品,而每个产品都有自己的描述和价格等信息。这个场景就需要将订单和产品分别存储在不同的表中。关联模式关联模式是将两个或多个表通过外键关联起来的模式。...这个场景就需要将博客文章和评论分别存储在不同的表中,并使用外键将它们关联起来。数据模型实现在Flask-RESTful中,使用ORM(对象关系映射)库来实现数据模型。...它支持多种数据库,并提供了高级的查询和关联功能。...() email = CharField() class Meta: database = db在这个例子中,我们使用Peewee定义了一个名为User的数据模型。

    33910

    如何添加合适的索引:MySql 数据库索引认知

    ,避免全表扫描和大量的回表。...把相同的表的业务拆成微服务,可以有效避免这个问题。...一般需求中需要做范围查询、遍历。会使用红黑树,hash表等数据结构,但是哈希表不适用范围查找,所以使用红黑树比较多,红黑树的时间复杂度是 O(logN)。...我们最开始讲的Demo,查询时需要全表扫描,需要依次访问每一个叶子页面。大表的全表扫描会大量消耗 CPU(数据过滤的逻辑处理) 和 IO(加载多个页到内存中),应当尽量避免。...有些情况下可给查询字段建立合适的索引,避免全表扫描。当然有的场景下,业务可能就是需要获取整个表的所有数据,比如数据仓库需要同步整个表的数据做数据分析。

    9500

    mysql联合索引有什么好处_联合索引和单个索引

    而在InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。...很明显,当索引中所有列精准匹配时,是会用索引的。 3.1.2 最左前缀匹配 最左前缀匹配这种情况即,查询条件中匹配最左边开始的连续一个或几个条件。...看来MySQL还没有智能到自动优化常量表达式的程度,因此在写查询语句时尽量避免表达式出现在查询中,而是先手工私下代数运算,转换为无表达式的查询语句。...3.2 索引选择性与前缀索引 首先不是任何时候都必须建索引,一般数据量较少(千级别)的数据表没必要建索引,全表查询即可,因为索引文件本身要消耗存储空间,同时索引会加重插入、删除和修改记录时的负担,另外,...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2.1K10

    基于Sanic的微服务基础架构

    使用peewee为ORM,但是只是用来做模型设计和migration。 使用opentracing为分布式追踪系统。 使用unittest做单元测试,并且使用mock来避免访问其他微服务。...name字段 info装饰器会创建表migrate_record来记录migrate,version每个model中必须唯一,使用version来记录是否执行过,还可以记录author,datetime...不使用ORM做数据库操作,一个原因是性能,ORM会有性能的损耗,并且无法使用asyncpg高性能库。另一个是单个微服务是很简单的,表结构不会很复杂,简单的SQL语句就可以处理来,没必要引入ORM。...生成的span先无阻塞的放入queue中,在task中消费队列的span。后期可以添加上采样频率。...数据 produces: response的返回数据 tag: API标签 在consumes和produces中传入的参数可以是peewee的model,会解析model生成API数据, 在field

    3.7K70

    Python:轻量级 ORM 框架 peewee 用法详解

    peewee 不会为缺失的字段做默认处理。 2、当 rows 传递的是元组列表时,必须指定 fields,并且 fields 中字段名的顺序跟元组一致。...此外,默认情况下,SQLite 将 SQL 查询中的绑定变量数限制为 999。...语法: insert_from(query, fields) 参数: query:SELECT查询用作数据源 fields:要将数据插入的字段,此参数必须要的 示例:我们将 Person 表按原结构复制一个...select 后可以添加 where 条件,如果不加则查询整个表。 语法: select(*fields) 参数: fields:需要查询的字段,不传时返回所有字段。传递方式如下例所示。...五、查询条件 当查询条件不止一个,需要使用逻辑运算符连接,而 Python 中的 and、or 在 Peewee 中是不支持的,此时我们需要使用 Peewee 封装好的运算符,如下: 逻辑符 含义 样例

    5.9K20

    Python自动生成SQL语句自动化

    它用于在关系型数据库中执行各种操作,如查询、插入、更新和删除数据。但是,手动编写SQL语句可能会很繁琐,尤其是对于复杂的数据操作任务。...使用Python生成更复杂的SQL语句除了简单的查询,Python还可以帮助我们生成更复杂的SQL语句,如插入、更新和删除操作。下面我们通过示例来演示如何使用Python生成这些SQL语句。...类来映射数据库中的员工表。..., employee.age, employee.salary)​# 关闭数据库连接db.close()在上面的示例中,我们定义了一个Employee模型类,它继承自Peewee的Model类,并定义了员工表的字段...然后通过操作模型对象来插入数据、执行查询等操作,而无需编写原生的SQL语句。Peewee会自动将我们的操作转换为相应的SQL语句,并执行数据库操作。

    33520

    Python 开发者 2017 应该关注的 7 个类库

    Zappa 同样也是很快的,可扩展的。 4、Peewee Peewee 是 Python 生态中简单的,富有表现力的 ORM ,它支持 SQLite,MySQL 和 PostgreSQL。...数据库经常需要为应用去使用扩展的数据。不过,通过 ad hoc 连接串去 get 和 set 数据库中的数据是一项非常有挑战的任务。这种情况下,Peewee 就可以帮很大的忙了。...Bokeh 也可以和 Jupyter Notebooks 很好的结合来用于研究领域。 7、Blaze Blaze 用于处理数据库和分析查询的阵列技术。...然而,理解每一个系统如何工作以及如何将数据整理成合适的形式是一个非常有挑战性的工作。由于缺乏对于如何在新技术之间混合和迁移数据的认识,从数据分析中攫取有效的结论将是非常困难的。...尽管存在一些其他的不太知名但是有效的 Python 类库,如 Gym + Universe,Boto3,Hug,Scrapy,Beautiful Soup 等等。

    1.6K10

    2021-Java后端工程师面试指南-(MySQL)

    面试题,面试宝典,随便一搜,根本看不完,也看不过来,那我写这个的意义又何在呢?...聊聊有哪些数据结构适合做索引结构的,优缺点是什么 Hash索引:hash表,我相信大家都很熟悉了,他的优点查询速度快,但是他不支持范围查询,哈希表这种结构适用于只有等值查询的场景 二叉树:如果数据多了,...树高会很高,查询的成本就会随着树高的增加而增加。...说说常见的sql需要注意到的点,也就是sql优化 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。...尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如: 应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描 不要在 where

    49520

    数据结构:查找

    一般线性表的顺序查找 一般线性表的顺序查找平均查找长度为:ASL(成功)=(n+1)/2 。...查找不成功时,与表中各关键字的比较次数显然是n+1次,从而顺序查找不成功的平均查找长度为:ASL(不成功)=n+1 顺序查找的缺点是当n较大时,平均查找长度较大,效率低;优点是对数据元素的存储没有要求,...查找不成功的平均查找长度在相等查找概率的情形下有ASL(不成功)=n/2+n/(n+1) 有序表的顺序查找中的线性表可以是链式存储结构 折半查找 折半查找,又称二分法查找,它仅适用于有序的顺序表。...m阶的B树与m阶的B+树异同: 在B+树中,具有n个关键字的结点只含有n棵子树,即每个关键字对应一棵子树;而在B树中,具有n个关键字的结点含有n+1棵子树。...而B+树的每一次查找都是稳定的。. 2. 范围查询 下面我们再来看看范围查询。 B-树如何做范围查询呢,只能依靠繁琐的中序遍历。

    3.4K51
    领券