1、安装sqlalchemy

    pip install sqlalchemy

2、导入必要的包及模块

    import sqlalchemy
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

3、创建数据库连接实例

    #创建数据库连接实例(#"数据库类型+数据库模块://用户名:密码@主机/库名")
db=sqlalchemy.create_engine("mysql+pymysql://root:q1q1q1@localhost/a")

4、创建一个元类的继承类

    base = declarative_base(db)

5、定义一个表(使用类)继承base

    class Student(base):
__tablename__ = "student"
id = sqlalchemy.Column(sqlalchemy.Integer,primary_key=True)
name = sqlalchemy.Column(sqlalchemy.String(32))
age = sqlalchemy.Column(sqlalchemy.String(32))

6、创建表

base.metadata返回sqlalchemy.schema.MetaData对象,它是所有Table对象的集合,调用create_all()该对象会触发CREATE TABLE语句,如果数据库还不存在这些表的话。

    if __name__ == "__main__":
base.metadata.create_all(db)

脚本运行前a数据库中的表:



运行上述代码之后,a数据库表:

7、绑定连接并创建session

    cursor = sessionmaker(bind=db) #得到的时一个类

    session = cursor() #实例

8、增(插入数据)

①插入一条数据

    stu = Student(
id = 1,
name = "张1",
age = 18
)
session.add(stu)
session.commit()



②同时插入多条数据

    session.add_all([
Student(id=2,name="张2",age=19),
Student(id=3,name="张3",age=20)
])
session.commit()

9、查询

①查询所有数据

    all_data = session.query(Student).all()#得到的是一个可迭代对象
for data in all_data:
print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))

②根据条件查询多条数据

    many_data = session.query(Student).filter_by(age=18)
print(many_data)#实际是一个sql查询语句,其还是一个存储一个对象的带迭代内容
for data in many_data:
print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))



还可以通过序列解包的方式获取数据

    many_data = session.query(Student).filter_by(age=18)
data, = many_data
print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))

③查询一条数据

    data = session.query(Student).get(ident=3) #查一条,只能以主键查
print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))

10、删除

    #先查询一条
data = session.query(Student).get(ident=3)
#然后删除
session.delete(data)
#然后提交操作
session.commit()

11、修改

   # 先查询一条
data = session.query(Student).get(ident=2)
#然后删除
data.name = "老李头"
#然后提交操作
session.commit()

python ORM模块sqlalchemy的使用的更多相关文章

  1. python ORM之sqlalchemy

    前沿对象关系映射ORM是在实际应用编程中常用到的技术,它在对象和关系之间建立了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化.简单来说就是开发人员在使用ORM模型编程时,不需 ...

  2. Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍

    1. 添加一个新对象 前面介绍了映射到实体表的映射类User,如果我们想将其持久化(Persist),那么就需要将这个由User类建立的对象实例添加到我们先前创建的Session会话实例中: 复制代码 ...

  3. python连接数据库使用SQLAlchemy

    参考python核心编程 ORM(Object Relational Mapper),如果你是一个更愿意操作Python对象而不是SQL查询的程序员,并且仍然希望使用关系型数据库作为你的后端,那么你可 ...

  4. Python与数据库[2] -> 关系对象映射/ORM[0] -> ORM 与 sqlalchemy 模块

    ORM 与 sqlalchemy 1 关于ORM / About ORM 1.1 ORM定义 / Definition of ORM ORM(Object Relational Mapping),即对 ...

  5. python(十二)下:ORM框架SQLAlchemy使用学习

    此出处:http://blog.csdn.net/fgf00/article/details/52949973 本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 ...

  6. 第二百八十九节,MySQL数据库-ORM之sqlalchemy模块操作数据库

    MySQL数据库-ORM之sqlalchemy模块操作数据库 sqlalchemy第三方模块 sqlalchemysqlalchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API ...

  7. python的ORM框架SQLAlchemy

    本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业  一.ORM介绍 如果写程序用pymysql和程序交互,那是不是要写原生sql语句 ...

  8. Django和SQLAlchemy,哪个Python ORM更好?

    ORM是什么? 在介绍Python下的两个ORM框架(Django和SQLAlchemy)的区别之前,我们首先要充分了解ORM框架的用途. ORM代表对象关系映射.ORM中的每个单词解释了他们在实际项 ...

  9. 【Python】ORM框架SQLAlchemy的使用

    ORM和SQLAlchemy简介 对象关系映射(Object Relational Mapping,简称ORM),简单的来说,ORM是将数据库中的表与面向对象语言中的类建立了一种对应的关系.然后我们操 ...

随机推荐

  1. EasyNVR是怎么做到Web浏览器播放RTSP摄像机直播视频延时控制在一秒内的

    背景说明 由于互联网的飞速发展,传统安防摄像头的视频监控直播与互联网直播相结合也是大势所趋.传统安防的直播大多在一个局域网内,在播放的客户端上也是有所限制,一般都是都需要OCX Web插件进行直播.对 ...

  2. idea使用快捷键ALT+/的时候,本来想在new后面创建对象,结果又出来一个new

    我们知道eclipse的自动提示补齐new 后面的对象的快捷键是ALT+/,当我使用idea的时候,把idea的快捷键换成了eclipse的风格. 然而当我按下ALT+/的时候,就给我自动输入了一个n ...

  3. 【Leetcode_easy】859. Buddy Strings

    problem 859. Buddy Strings solution: class Solution { public: bool buddyStrings(string A, string B) ...

  4. Excel对某一列的数据插入处理,域名得出IP

    早期都是通过Excel做数据统计,对某一列的数据插入处理. 代码功能是从A列纯域名,将域名转换为IP,从域名A列得到IP写到B列. 代码 #!/usr/bin/python #coding:utf-8 ...

  5. iOS 多线程的简单理解(2) 队列 :串行 ,并行,MainQueue,GlobalQueue

    多线程队列是装载线程任务的队形结构.(系统以先进先出的方式调度队列中的任务执行 FIFO).在GCD中有两种队列: 串行队列.并发队列. 队列 :串行队列.并发队列,全局主对列,全局并发队列 2.1. ...

  6. 捕捉AVPlayerViewController 系统原生工具栏的出现、隐藏事件

    需求前提 1. app内轻量级的视频播放功能,故不希望引入“过度开发.过度封装”的第三方控件组,使用原生的AVPlayerViewController 2. 工具栏有新增控件需求,如下载按钮 等 3. ...

  7. Linux下的Curses库的源码下载与安装

    curses库是可以在linux终端中写出字符用户界面的一个库,现在较新的版本应该是ncurses库,现在已经很少有人再去使用他了,所以想拥有这个库并且在linux下写出自己用户界面的可以参考一下本博 ...

  8. servlet02

    内容  1servlet   2HTTP协议  3Request servlet继承的体系结构   抽象类 | GenericServlet:将servlet接口中其他方法默认空实现,只将servic ...

  9. samtools获取uniq reads

    参考地址: https://www.biostars.org/p/56246/ -q INT only include reads with mapping quality >= INT [0] ...

  10. nginx配置的记录

    基本使用 语法规则: location [=|~|~*|^~] /uri/ { - } = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url ...