Python3-SQLAlchemy学习1:简介与使用
文章目录
- 一、什么是SQLAlchemy?
- 二、什么是ORM?
- 三、SQLAlchemy有什么优点?
- 四、sqlalchemy怎么使用?
- 4.1 安装SQLAlchemy
- 4.2 连接MySQL
- 参考链接
初学Python,小记。若有不足,望指,感激涕零!
一、什么是SQLAlchemy?
自我理解:
alchemy 炼金术。SQL炼金术?也可如此理解。炼金,即为“提炼精华",将Python中连接MySQL的重点、核心部分提炼出来,然后把这些技术封装在SQLAlchemy软件中。技术大成,成为所谓的”炼金术士“!
正式理解:
SQLAlchemy是最流行的关系型数据库的ORM框架,提供SQL工具包和对象关系映射(ORM)工具。
二、什么是ORM?
ORM(Object Relational Mapping),对象关系映射,即将数据库中的表与面向对象中的类建立一种对应关系。
通过ORM我们可以直接使用Python的类的方式做数据库开发,而不再直接写原生的SQL语句(甚至不需要SQL基础)。
三、SQLAlchemy有什么优点?
- 高效、高性能:访问数据库时效率高。
- 解脱SQL语句:让我们使用类和对象的方式访问数据库,从而解脱繁琐的SQL语句。
四、sqlalchemy怎么使用?
4.1 安装SQLAlchemy
$ pip install sqlalchemy
(因学习时已安装好,自己也没实际操作,借鉴资料先做记录,后续完善。)
4.2 连接MySQL
(1)建立连接引擎和会话
from sqlachemy import caeate_engine
from sqlalchemy.orm import scoped_session,sessionmakerengine = create_engine(setting.read_URL())
session = scoped_session(sessionmaker(bind=engine))
engine,和数据库连接的引擎。正如汽车需要引擎驱动,SQLAlchemy也需要Engine来驱动。Engine维护了一个数据库连接池对象(Pool)。
create_engine()方法即创建了一个连接数据库的引擎。创建此引擎时需要一个URL表明连接数据库的信息,还有一些其他的参数配置。
create_engine()参数详解:
- pool_size: 设置连接池中保持的连接数。
- max_overflow: 当连接数使用量达到pool_size且又有请求时,允许再新建的连接数。
- pool_timeout:当连接数达到pool_size+max_overflow且又有新的请求时,进程会等待pool_timeout秒,超过这个时间会抛出异常。
- pool_recycle:一个数据库连接的生存时间,以秒为单位。
- url:要连接的数据库的参数配置,格式为:
sort+driver://username:passward@host:port/database
sort:要连接数据库的类型
driver:数据库连接驱动(Python2使用mysqldb
,Python3使用pymysql
)
username:用户名
passward:密码
host:服务器地址
port:端口号
database:要连接的数据库
session,会话,用于与数据库对话。说白了,就是用于和数据库交互。
sessionmaker()创建了一个会话工厂类,创建此工厂类时需要绑定引擎,表示此会话工厂要产出哪个数据库连接的会话。
sessionmaker()创建的session只可以单线程使用,即同一时刻此session只供一个对象使用。而scoped_session()创建的session可在多线程下共享,即同一时刻多个对象可同时使用此session。
(2)建立映射关系类
#生成orm基类,用作映射
Base = declarative_base()
#生成数据库表模型
class Student(Base):__tablename__ = 'student'id = Column(Integer,primary_key = True)name = Column(String(32))age = Column(String(32))sex = Column(String(32))score = Column(String(32))def __repr__(self):return "<Student id:%d, name:%s, age:%s, sex:%s, score:%s>"%(self.id,self.name,self.age,self.sex,self.score)
tablename绑定的是数据库表的名字
repr函数是规范对象的输出格式,类似于Java中的toString方法。基类的repr方法返回的是地址,如果不重写此方法,则打印出的为对象的地址。
(3)执行SQL操作
#增加数据
def insert(name_,age_,sex_,score_):obj = Student(name=name_,age=age_,sex=sex_,score=score_)#生成数据对象session.add(obj) #把数据对象放入session中session.commit()
将要增加的信息封装成一个对象,以对象作为参数传递
将数据添加到session中一定要提交,增删改查操作都需要。这就好比货物运输,session就是运输车(也就是负责交互功能),当把要运输的货物装上车后,要让运输车把货物运送到目的地,这就相当于commit的过程。只有commit了,执行的操作才会生效。
#查询所有的数据
def select_all():results = session.query(Student).all()
使用query方法查询数据
#修改数据
def uodate(id_,list_up) #根据id修改信息,list_up为要修改的数据集合result = session.query(Student).filter(Student.id==id_).update(list_up)print(result)
list_up的格式为:
{'name':'测试'}
,即将要修改的数据放到一个字典里。
修改数据的思路为先查出要修改的数据,然后对数据进行操作。
#删除数据(先查后删)
def delete(id_):result = db.session.query(Student).filter(Student.id == id_).delete()db.session.commit()print(result)
参考链接
https://www.leixue.com/what-is-sqlalchelmy
https://www.jb51.net/article/164591.htm
Python3-SQLAlchemy学习1:简介与使用相关推荐
- Python3 爬虫学习笔记 C03 【Ajax 数据爬取】
Python3 爬虫学习笔记第三章 -- [Ajax 数据爬取] 文章目录 [3.1]Ajax 简介 [3.2]解析真实地址提取 [3.1]Ajax 简介 Ajax - Asynchronous Ja ...
- Python3 爬虫学习笔记 C01 【基本库 urllib 的使用】
Python3 爬虫学习笔记第一章 -- [基本库 urllib 的使用] 文章目录 [1.1] urllib 简介 [1.2] urllib.request 发送请求 [1.2.1] urllib. ...
- python3面向对象学习
python3面向对象学习 面向对象 面向对象技术简介 类定义 类对象 self代表类的实例,而非类 类的方法 继承 多继承 方法重写 类属性与方法 类的私有属性 类的方法 类的私有方法 运算符重载 ...
- 以下用于数据存储领域的python第三方库是-Python3爬虫学习之MySQL数据库存储爬取的信息详解...
本文实例讲述了Python3爬虫学习之MySQL数据库存储爬取的信息.分享给大家供大家参考,具体如下: 数据库存储爬取的信息(MySQL) 爬取到的数据为了更好地进行分析利用,而之前将爬取得数据存放在 ...
- python3视频教程-Python3深度学习视频学习路线
(关注'AI新视野'公众号,发送"资料'二字,免费获取50G人工智能视频教程!) 经常有粉丝问我:"什么都不懂,怎么入门深度学习?".确实,对于初学者来说,网上繁多的教程 ...
- python的程序异常类型,Python3.4学习笔记之类型判断,异常处理,终止程序操作小结...
本文实例讲述了Python3.4类型判断,异常处理,终止程序操作.分享给大家供大家参考,具体如下: python3.4学习笔记 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 ...
- python3.4学习笔记(九) Python GUI桌面应用开发工具选择
python3.4学习笔记(九) Python GUI桌面应用开发工具选择 Python GUI开发工具选择 - WEB开发者 http://www.admin10000.com/document/9 ...
- Python3 爬虫学习笔记 C18【爬虫框架 pyspider — 深入理解】
Python3 爬虫学习笔记第十八章 -- [爬虫框架 pyspider - 深入理解] 文章目录 [18.1]启动参数 [18.2]运行单个组件 [18.2.1]运行 Scheduler [18.2 ...
- Python3 爬虫学习笔记 C17【爬虫框架 pyspider — 基本使用】
Python3 爬虫学习笔记第十七章 -- [爬虫框架 pyspider - 基本使用] 文章目录 [17.1]初识 pyspider [17.2]使用 pyspider [17.2.1]主界面 [1 ...
- Python3 爬虫学习笔记 C16【数据储存系列 — Redis】
Python3 爬虫学习笔记第十六章 -- [数据储存系列 - Redis] 文章目录 [16.1]关于 Redis [16.2]使用 Redis [16.3]Key(键)操作 [16.4]Strin ...
最新文章
- 13 Java程序员面试宝典视频课程之容器
- 将指定目录下的sql文件名写入到txt文件中
- android studio 开发android app 真机调试
- 84. Leetcode 70. 爬楼梯 (动态规划-基础题)
- elasticsearch使用more_like_this实现基于内容的推荐
- 从零写一个编译器(完结):总结和系列索引
- pymysql安装_第八章 nova组件安装2
- 中华黑豹增强版木马分析
- 【LeetCode】剑指 Offer 58 - I. 翻转单词顺序
- Linux升级php
- 使用ODBC API读取Decimal或者Numeric
- java application.doevents_Application.DoEvents的用法
- 设计模式--工厂模式(一个关于工厂的故事)
- 【mssql】SQL Server2012编程入门经典(第四版)(上) 读书笔记
- win10和win7哪个好用_Win10和Win7到底哪个好用(真实评测)
- A1,A2,A3,A4纸的尺寸
- 「NOI2018」冒泡排序
- JS方式实现隐藏手机号码中间4位数
- 《Android深入透析》之Android事件分发机制
- 苹果手机计算机怎么看计算历史记录,苹果计算机怎么看计算记录