文章目录

  • 一、什么是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有什么优点?

  1. 高效、高性能:访问数据库时效率高。
  2. 解脱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:简介与使用相关推荐

  1. Python3 爬虫学习笔记 C03 【Ajax 数据爬取】

    Python3 爬虫学习笔记第三章 -- [Ajax 数据爬取] 文章目录 [3.1]Ajax 简介 [3.2]解析真实地址提取 [3.1]Ajax 简介 Ajax - Asynchronous Ja ...

  2. Python3 爬虫学习笔记 C01 【基本库 urllib 的使用】

    Python3 爬虫学习笔记第一章 -- [基本库 urllib 的使用] 文章目录 [1.1] urllib 简介 [1.2] urllib.request 发送请求 [1.2.1] urllib. ...

  3. python3面向对象学习

    python3面向对象学习 面向对象 面向对象技术简介 类定义 类对象 self代表类的实例,而非类 类的方法 继承 多继承 方法重写 类属性与方法 类的私有属性 类的方法 类的私有方法 运算符重载 ...

  4. 以下用于数据存储领域的python第三方库是-Python3爬虫学习之MySQL数据库存储爬取的信息详解...

    本文实例讲述了Python3爬虫学习之MySQL数据库存储爬取的信息.分享给大家供大家参考,具体如下: 数据库存储爬取的信息(MySQL) 爬取到的数据为了更好地进行分析利用,而之前将爬取得数据存放在 ...

  5. python3视频教程-Python3深度学习视频学习路线

    (关注'AI新视野'公众号,发送"资料'二字,免费获取50G人工智能视频教程!) 经常有粉丝问我:"什么都不懂,怎么入门深度学习?".确实,对于初学者来说,网上繁多的教程 ...

  6. python的程序异常类型,Python3.4学习笔记之类型判断,异常处理,终止程序操作小结...

    本文实例讲述了Python3.4类型判断,异常处理,终止程序操作.分享给大家供大家参考,具体如下: python3.4学习笔记 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 ...

  7. python3.4学习笔记(九) Python GUI桌面应用开发工具选择

    python3.4学习笔记(九) Python GUI桌面应用开发工具选择 Python GUI开发工具选择 - WEB开发者 http://www.admin10000.com/document/9 ...

  8. Python3 爬虫学习笔记 C18【爬虫框架 pyspider — 深入理解】

    Python3 爬虫学习笔记第十八章 -- [爬虫框架 pyspider - 深入理解] 文章目录 [18.1]启动参数 [18.2]运行单个组件 [18.2.1]运行 Scheduler [18.2 ...

  9. Python3 爬虫学习笔记 C17【爬虫框架 pyspider — 基本使用】

    Python3 爬虫学习笔记第十七章 -- [爬虫框架 pyspider - 基本使用] 文章目录 [17.1]初识 pyspider [17.2]使用 pyspider [17.2.1]主界面 [1 ...

  10. Python3 爬虫学习笔记 C16【数据储存系列 — Redis】

    Python3 爬虫学习笔记第十六章 -- [数据储存系列 - Redis] 文章目录 [16.1]关于 Redis [16.2]使用 Redis [16.3]Key(键)操作 [16.4]Strin ...

最新文章

  1. 13 Java程序员面试宝典视频课程之容器
  2. 将指定目录下的sql文件名写入到txt文件中
  3. android studio 开发android app 真机调试
  4. 84. Leetcode 70. 爬楼梯 (动态规划-基础题)
  5. elasticsearch使用more_like_this实现基于内容的推荐
  6. 从零写一个编译器(完结):总结和系列索引
  7. pymysql安装_第八章 nova组件安装2
  8. 中华黑豹增强版木马分析
  9. 【LeetCode】剑指 Offer 58 - I. 翻转单词顺序
  10. Linux升级php
  11. 使用ODBC API读取Decimal或者Numeric
  12. java application.doevents_Application.DoEvents的用法
  13. 设计模式--工厂模式(一个关于工厂的故事)
  14. 【mssql】SQL Server2012编程入门经典(第四版)(上) 读书笔记
  15. win10和win7哪个好用_Win10和Win7到底哪个好用(真实评测)
  16. A1,A2,A3,A4纸的尺寸
  17. 「NOI2018」冒泡排序
  18. JS方式实现隐藏手机号码中间4位数
  19. 《Android深入透析》之Android事件分发机制
  20. 苹果手机计算机怎么看计算历史记录,苹果计算机怎么看计算记录

热门文章

  1. PDU与SDU的区别
  2. windows上,cmd终端上一次执行多条指令
  3. 计算机文化基础word的基本知识点,《计算机文化基础》教案.doc
  4. 毕业九个月时的再思考:什么是重要的事
  5. 【leetcode】使用最小花费爬楼梯 c++
  6. 网管型交换机的区别?它具备哪些功能?
  7. 招沿实业投资理财二三事教你轻松钱生钱
  8. 逆天者的java版屏幕准星
  9. C语言 基础五 循环
  10. #Mysql mysql复制表的几种方式