sqlalchemy mysql_SQLAlchemy(1)
SQLAlchemy(1)
目录
SQLAlchemy
1.简介
2.什么是ORM
3.开启MySQL
的查询日志
4.SQLAlchemy
与数据库的逻辑对应
5.连接数据库
6.创建会话Session
7.创建映射(Model
)
1.Column
的数据类型
2.Column
列级别约束
3.表级别约束
8.单表操作
1.表的操作-增(insert into
)
2.表的操作-删(delete
)
3.表的操作-改(update
)
4.表的操作-查(select
)
1.基本查询
2.查询时的where
子句
3.查询返回的列表(多个实例)以及标量(一个实例)
4.聚合查询
9.事务回滚
10.外键约束
11.基本关系模式
1.一对多
2.一对多双向关系
3.一对一关系
4.多对多关系-中间表无意义
5.多对多关系-中间表有意义
12.双向关系中数据的查询和添加
13.cascade
级联
1.一对多模式中relationship
的影响
2.relationship
中cascade
参数设置
14.relationship
中使用order_by
排序
1.简介
SQLAlchemy
是和很多数据库进行交互的一个库,它支持Postgresql,mysql,oracle,Ms-sql
等等主流的数据库库.虽然各个厂家的数据库使用SQL
语言不同,但是SQLAlchemy
在底层封装了他们,可以使用一套标准来操作数据库.
SQLAlchemy
的构成:
SQLAlchemy
最主要的组成就是SQLAlchemy Core
和SQLAlchemy ORM
两大部分.官网
SQLAlchemy Core
: 基于Scheme
,类似传统的SQL
语句.
Connection Pooling
: 连接池
Dlalect
:根据Engine
的定义,调用不同的数据库API
(比如mysql+pymysql
)
schema/types
:内部实现了类和表的映射
SQL Expession Language
:封装好的SQL
语句
Engine
:一个到数据的连接
SQLAlchemy ORM
:ORM
,关系对象映射,更好的从面向对象的角度去操作数据库.下面着重讨论ORM
.
2.什么是ORM
ORM
(Object-Relational Mapping),对象关系映射.对象和关系数据是业务实体的两种表现形式.业务实体在内存中表现为对象,在数据库中表现为关系数据.内存中的对象之间存在关联和继承关系.而在数据库中,关系数据无法直接表达多对多关联和继承关系.因此,
ORM
一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射.数据库中的表都是二维表,它的基本结构是行和列.如果一张表的内容用
python
的数据结构表示出来的话,可以用一个list
来表示,它类似与list((1,2))
.在list
中包裹tuple
来表示一行记录.比如,一张包含
id
,name
的user
表user = [(1, 'Jack'),(2,'Bob'),(3, 'Harry')]
Python
的DB-API
返回的数据结构就类似上面这样的.但是使用
tuple
来表示一行,很难看出表的结构.比如在mysql
中也存在一张Users
表.mysql root@192.168.101:test> desc Users; +----------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------+-------------+------+-----+---------+-------+| id | int(11) | NO | PRI | <null> | || name | varchar(50) | YES | | <null> | || fullname | varchar(50) | YES | | <null> | || password | varchar(50) | YES | | <null> | |+----------+-------------+------+-----+---------+-------+
SQL
语句中的约束,非空,数据类型等等,根本不能使用一个单独的list
来表示.但是如果把一个
tuple
用class
实例来表示,就更容易看出表的结构class Integer: def __init__(self, x): self.x = int(x)class String: def __init__(self, x): self.x = str(x) class User: def __init__(self, id,name): self.id = Interger(id) self.name = String(x) user = [ User(1, 'Jack'), User(2,'Bob'), User(3, 'Harry')]
当然
ORM
框架实现的并不是这么简单的,但是类似与这样把数据库的表结构映射在对象上,就是ORM
.而做这个工作的就是
ORM
框架,在Python
中最有名的框架就是SQLAlchemy
.
ORM
的优缺点:
提高开发效率,提高代码重用
是开发更加的抽象
可移植,不只是局限在
mysql
,可以是MS-SQL
,orcal
等.可以方便的引入一些附加功能等.
自动化进行关系数据库的映射需要消耗系统性.
在处理多表联查,
where
子句中复杂条件时,ORM
的语法会变得复杂.
3.开启MySQL
的查询日志
查询日志功能是否开启,并开启日志功能
mysql root@192.168.101:test> show variables like 'general%'; +------------------+---------------------------+| Variable_name | Value |+------------------+---------------------------+| general_log | OFF || general_log_file | /mysql_data/localhost.log |+------------------+---------------------------+mysql root@192.168.101:test> set GLOBAL general_log='ON'; mysql root@192.168.101:test> show variables like 'general%'; +------------------+---------------------------+| Variable_name | Value |+------------------+---------------------------+| general_log | ON || general_log_file | /mysql_data/localhost.log |+------------------+---------------------------+
在shall中查看日志(日志文件要根据自己的服务器的实际路径)
$ tail -10 /mysql_data/localhost.log
4.SQLAlchemy
与数据库的逻辑对应
SQLALchemy
逻辑概念数据库 说明 Engine()
连接数据库 Session()
连接池,事务池 Session
是Query
的入口Model
表 Python
中类对应数据库的表,它用面向对象的形式来表现数据库中的表Column
列 Python
类中定义了Column
,支持运算符操作Query
行 可以对单行或多行操作(增删改查)
sqlalchemy mysql_SQLAlchemy(1)相关推荐
- sqlalchemy mysql_SQLAlchemy简明教程
原文可见:SQLAlchemy简明教程 - Jiajun的编程随想 SQLAlchemy是Python中常用的一个ORM,SQLAlchemy分成三部分: ORM,就是我们用类来表示数据库schema ...
- SQLALchemy之Python连接MySQL
20220225 https://www.cnblogs.com/toheart/p/9802990.html pymssql连接sqlserver https://blog.csdn.net/qq_ ...
- Python的数据库操作(Sqlalchemy)
ORM 全称 Object Relational Mapping, 翻译过来叫对象关系映射.简单的说,ORM 将数据库中的表与面向对象语言中的类建立了一种对应关系.这样,我们要操作数据库,数据库中的表 ...
- 04:sqlalchemy操作数据库 不错
目录: 1.1 ORM介绍(作用:不用原生SQL语句对数据库操作) 1.2 安装sqlalchemy并创建表 1.3 使用sqlalchemy对表基本操作 1.4 一对多外键关联 1.5 sqlalc ...
- Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- python 之路,Day11 (下)- sqlalchemy ORM
python 之路,Day11 - sqlalchemy ORM 本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 1. ORM介绍 ...
- 自动获取mysql建表语句_脚本工具---自动解析mysql建表语句,生成sqlalchemy表对象声明...
常规建表语句: CREATE TABLE `test_table` ( `id` int(11) NOT NULL, `name` char(64) NOT NULL, `password` char ...
- ORM 框架中SQLALCHEMY一点点个人总结
声明:工作原因涉及一点 What is ORM 答: object relation mapping 一种实现对象与数据库中的关系表映射的中间件.ORM 框架中最有名的是SQLALCHEMY 具体使用 ...
- Python之Mysql及SQLAlchemy操作总结
一.Mysql命令总结 1.创建库 create database test1; 2.授权一个用户 grant all privileges on *.* to 'feng'@'%' identifi ...
最新文章
- 在进行商业运算时解决BigDecimal的精度丢失问题
- 一行代码卖出 570 美元, 天价代码的内幕
- 打开Excel文件并插入图片
- linux:apt的源
- C# 获取当前月第一天和最后一天 计算两个日期差多少天
- C#教程5:操作算子(1)
- hdu 2136 筛法求素数
- 美国物联网平台提供商Evrythng获得2480万美元B轮融资
- 史上最萌最认真的机器学习/深度学习/模式识别入门指导手册(二)
- php新闻管理系统(简单)学习教程
- VS2017下载安装
- LGame-0.3(Android与JavaSE游戏引擎)正式发布,新增SRPG制作模块
- 清北级别,补助丰厚,这样的中科院信工所你心动了吗?
- 【一些好听的英文歌曲】
- Java用户注册手机短信验证码校验功能实现
- 数据挖掘里的开源问题(PAKDD 2009 WORKSHOP CALL FOR PAPER)
- LL(1)文法构造FIRST、FOLLOW、分析表并分析
- html超链接并可以返回,返回到上一页的html代码的几种写法
- 【分析数据集各类GT数量分布】
- 【OpenGL学习】光照贴图
热门文章
- 系统安全工作笔记001---zigw挖矿病毒_没想到生产环境给整成矿鸡了_安全意识有待提升....
- android学习笔记---42_服务的生命周期
- Android学习笔记06---电话拨号器的制作:项目结构深化
- 2017年7月9 号小计
- Resource is out of sync with the file system解决办法
- 手把手教你安装 FastAdmin 到虚拟主机 (phpStudy)
- Setting the Background Image for a List Control
- 西部数码服务器绑定域名解析,中国数据域名如何修改DNS设置方法
- php 解压zip到目录下,php 解压zip压缩包内容到指定目录的实例
- python如何监听cmd_如何从Python脚本捕获Python解释器和/或CMD.EXE的输出?