位置: 编程技术 - 正文

在Python程序和Flask框架中使用SQLAlchemy的教程(用python编写的程序称为)

编辑:rootadmin

推荐整理分享在Python程序和Flask框架中使用SQLAlchemy的教程(用python编写的程序称为),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python语言程序中包含的三种错误,用python编写的程序称为,python编写的程序可以在任何平台中执行,用python语言编写的程序称为,在python语言中,在python中运行程序的命令,在python中运行程序的命令,在python语言中,内容如对您有帮助,希望把文章链接给更多的朋友!

ORM 江湖曾几何时,程序员因为惧怕SQL而在开发的时候小心翼翼的写着sql,心中总是少不了恐慌,万一不小心sql语句出错,搞坏了数据库怎么办?又或者为了获取一些数据,什么内外左右连接,函数存储过程等等。毫无疑问,不搞懂这些,怎么都觉得变扭,说不定某天就跳进了坑里,叫天天不应,喊地地不答。

ORM 的出现,让畏惧SQL的开发者,在坑里看见了爬出去的绳索,仿佛天空并不是那么黑暗,至少再暗,我们也有了眼睛。顾名思义,ORM 对象关系映射,简而言之,就是把数据库的一个个table(表),映射为编程语言的class(类)。

python中比较著名的ORM框架有很多,大名顶顶的 SQLAlchemy 是python世界里当仁不让的ORM框架。江湖中peewee,strom, pyorm,SQLObject 各领风骚,可是最终还是SQLAlchemy 傲视群雄。

SQLAlchemy 简介SQLAlchemy 分为两个部分,一共用于 ORM 的对象映射,另外一个是核心的 SQL expression 。第一个很好理解,纯粹的ORM,后面这个不是 ORM,而是DBAPI的封装,当然也提供了很多方法,避免了直接写sql,而是通过一些sql表达式。使用 SQLAlchemy 则可以分为三种方式。

使用 sql expression ,通过 SQLAlchemy 的方法写sql表达式,简介的写sql 使用 raw sql, 直接书写 sql 使用 ORM 避开直接书写 sql

本文先探讨 SQLAlchemy的 sql expresstion 部分的用法。主要还是跟着官方的 SQL Expression Language Tutorial.介绍

为什么要学习 sql expresstion ,而不直接上 ORM?因为后面这个两个是 orm 的基础。并且,即是不使用orm,后面这两个也能很好的完成工作,并且代码的可读性更好。纯粹把SQLAlchemy当成dbapi使用。首先SQLAlchemy 内建数据库连接池,解决了连接操作相关繁琐的处理。其次,提供方便的强大的log功能,最后,复杂的查询语句,依靠单纯的ORM比较难实现。

实战连接数据库首先需要导入 sqlalchemy 库,然后建立数据库连接,这里使用 mysql。通过create_engine方法进行

create_engine 方法进行数据库连接,返回一个 db 对象。里面的参数表示

数据库类型://用户名:密码(没有密码则为空,不填)@数据库主机地址/数据库名&#;编码echo = True 是为了方便 控制台 logging 输出一些sql信息,默认是False通过这个engine对象可以直接execute 进行查询,例如 engine.execute("SELECT * FROM user") 也可以通过 engine 获取连接在查询,例如 conn = engine.connect() 通过 conn.execute()方法进行查询。两者有什么差别呢?

直接使用engine的execute执行sql的方式, 叫做connnectionless执行,借助 engine.connect()获取conn, 然后通过conn执行sql, 叫做connection执行主要差别在于是否使用transaction模式, 如果不涉及transaction, 两种方法效果是一样的. 官网推荐使用后者。定义表定义数据表,才能进行sql表达式的操作,毕竟sql表达式的表的确定,是sqlalchemy制定的,如果数据库已经存在了数据表还需要定义么?当然,这里其实是一个映射关系,如果不指定,查询表达式就不知道是附加在那个表的操作,当然定义的时候,注意表名和字段名,代码和数据的必须保持一致。定义好之后,就能创建数据表,一旦创建了,再次运行创建的代码,数据库是不会创建的。

插入 insert有了数据表和连接对象,对应数据库操作就简单了。

查询 select查询方式很灵活,多数时候使用 sqlalchemy.sql 下面的 select方法

如果需要查询自定义的字段,可是使用 user 的cloumn 对象,例如

同时查询两个表

操作符

操作连接这里的连接指条件查询的时候,逻辑运算符的连接,即 and or 和 not

得到的结果为 编译的sql语句片段,下面看一个完整的例子

使用 raw sql 方式

在Python程序和Flask框架中使用SQLAlchemy的教程(用python编写的程序称为)

遇到负责的sql语句的时候,可以使用 sqlalchemy.sql 下面的 text 函数。将字符串的sql语句包装编译成为 execute执行需要的sql对象。例如:、

连接 join连接有join 和 outejoin 两个方法,join 有两个参数,第一个是join 的表,第二个是on 的条件,joing之后必须要配合select_from 方法:

排序 分组 分页排序使用 order_by 方法,分组是 group_by ,分页自然就是limit 和 offset两个方法配合

更新 update前面都是一些查询,更新和插入的方法很像,都是 表下面的方法,不同的是,update 多了一个 where 方法 用来选择过滤

还有一个高级用法,就是一次命令执行多个记录的更新,需要用到 bindparam 方法

删除 delete删除比较容易,调用 delete方法即可,不加 where 过滤,则删除所有数据,但是不会drop掉表,等于清空了数据表

flask-sqlalchemySQLAlchemy已经成为了python世界里面orm的标准,flask是一个轻巧的web框架,可以自由的使用orm,其中flask-sqlalchemy是专门为flask指定的插件。

安装flask-sqlalchemy

初始化sqlalchemy

定义model

创建数据表数据包的创建使用sqlalchemy app,如果表已经存在,则忽略,如果不存在,则新建

需要注意的是,如果要插入中文,必须插入 unicode字符串

定义关系关系型数据库,最重要的就是关系。通常关系分为 一对一(例如无限级栏目),一对多(文章和栏目),多对多(文章和标签)

one to many:我们定义一个Category(栏目)和Post(文章),两者是一对多的关系,一个栏目有许多文章,一个文章属于一个栏目。

如何使用查询呢?

many to many (评论已经指出,这样的做法无法关联删除,简书没有删除线格式,多多对例子作废,在此提示,以免被误导)对于多对多的关系,往往是定义一个两个model的id的另外一张表,例如 Post 和 Tag之间是多对多,需要定义一个 Post_Tag的表

查询:

自身一对一也是常用的需求,比如无限分级栏目

查询:

关于 flask-sqlalchemy 定义models的简单应用就这么多,更多的技巧在于如何查询。

Python第三方库的安装方法总结 Python是一门优雅的语言,简洁的语法,强大的功能。当然丰富的第三方库,更能加速开发。那么问题来了,如何安装这些第三方库(包)呢?安装第三

Python的Flask框架应用调用Redis队列数据的方法 任务异步化打开浏览器,输入地址,按下回车,打开了页面。于是一个HTTP请求(request)就由客户端发送到服务器,服务器处理请求,返回响应(response

Python使用Pycrypto库进行RSA加密的方法详解 密码与通信密码技术是一门历史悠久的技术。信息传播离不开加密与解密。密码技术的用途主要源于两个方面,加密/解密和签名/验签在信息传播中,通

标签: 用python编写的程序称为

本文链接地址:https://www.jiuchutong.com/biancheng/387580.html 转载请保留说明!

上一篇:Python的socket模块源码中的一些实现要点分析(python socket模块)

下一篇:Python第三方库的安装方法总结(Python第三方库的常见安装方法有)

  • 合同不明确
  • 年应税销售额是利润表中的营业收入吗
  • 今年成立的公司,残保金是否要申报
  • 其他应付款年终怎么结转
  • 小规模建筑业如何做账
  • 房地产预收账款如何缴纳印花税
  • 销售自己使用过的固定资产如何开票
  • 个税手续费返还会计分录
  • 餐饮加盟公司怎么经营
  • 预交税费怎么做分录
  • 少缴纳社保怎么要求支付赔偿金
  • 如何选一般纳税人还是小规模纳税人合作?
  • 企业所得税核定征收怎么计算
  • 开给学校的发票要税号吗
  • 垃圾填埋沼气发电招聘
  • 补提以前年度摊销
  • 未开票收入纳税
  • 进项票认证超了怎么处理
  • 资产负债表里的存货怎么算
  • 国有资产租赁合同问题
  • 前端vue实现预览excel
  • 财政补助收入的账务处理
  • 未取得发票的工程预付款怎么入账
  • 什么是所得税收入
  • fbembed.dll
  • 违反发票管理的处罚
  • framework启动
  • php批量上传
  • 医院执行政府会计制度补充规定
  • php中类静态成员描述不正确的是
  • php解析json对象
  • bom也称为
  • 日期选择器的()属性表示选择器的粒度
  • web后端开发是什么意思
  • 净化器 ccm
  • 水利建设基金计算公式
  • 帝国cms采集发布的文章链接打不开
  • 企业员工年终奖仲裁
  • 车船税酌定减免
  • 记 vue-cli-plugin-dll 使用,优化vue-cli项目构建打包速度
  • 私募基金成立备案流程
  • 银行转账付款会计分录
  • sqlserver、mysql获取连接字符串步骤
  • 供应商费用是什么
  • 一般纳税人适用什么会计准则
  • 记账凭证核算形式
  • 出售其他债权投资产生的收益为什么计入留存收益
  • 冲回上月暂估入账的商品会计分录
  • 出口退税的范围是多少
  • 施工单位结算
  • 母猪生小猪会计分录
  • 网店会计怎么做账
  • 发现以前年度增值税附表2填写错了那时增值税是0
  • 本期应征增值税销售额是什么意思
  • 年终建账于年初建账,在录入期初余额时有什么不一样?
  • 三证合一后税务怎么办
  • 启用5g后流量有什么影响
  • Kali(debian) Too many open files 错误处理办法
  • 系统用户在哪里
  • macbook恢复macos
  • windows 8怎么样
  • linux重启shell
  • linux用户登录
  • excel初始化时出错
  • 个人简历
  • python构造方法的参数
  • javascript中的闭包
  • appendChild() 或 insertBefore()使用与区别介绍
  • node vm模块
  • shell脚本 -ne 0
  • ie不支持p标签
  • Python selenium 三种等待方式详解(必会)
  • 安卓手机管家删除的照片怎么恢复
  • 胰腺在人体的哪个部位图解
  • 移动应用界面设计形考1答案
  • 纳税申报表作废了怎么重新报?
  • 2021年四川医保缴费截止时间
  • 国有企业全面改革方案
  • 沈阳沈河区税务局待遇
  • 税务登录 河北省地方税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设