python ORM模块sqlalchemy的使用
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的使用的更多相关文章
- python ORM之sqlalchemy
前沿对象关系映射ORM是在实际应用编程中常用到的技术,它在对象和关系之间建立了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化.简单来说就是开发人员在使用ORM模型编程时,不需 ...
- Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
1. 添加一个新对象 前面介绍了映射到实体表的映射类User,如果我们想将其持久化(Persist),那么就需要将这个由User类建立的对象实例添加到我们先前创建的Session会话实例中: 复制代码 ...
- python连接数据库使用SQLAlchemy
参考python核心编程 ORM(Object Relational Mapper),如果你是一个更愿意操作Python对象而不是SQL查询的程序员,并且仍然希望使用关系型数据库作为你的后端,那么你可 ...
- Python与数据库[2] -> 关系对象映射/ORM[0] -> ORM 与 sqlalchemy 模块
ORM 与 sqlalchemy 1 关于ORM / About ORM 1.1 ORM定义 / Definition of ORM ORM(Object Relational Mapping),即对 ...
- python(十二)下:ORM框架SQLAlchemy使用学习
此出处:http://blog.csdn.net/fgf00/article/details/52949973 本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 ...
- 第二百八十九节,MySQL数据库-ORM之sqlalchemy模块操作数据库
MySQL数据库-ORM之sqlalchemy模块操作数据库 sqlalchemy第三方模块 sqlalchemysqlalchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API ...
- python的ORM框架SQLAlchemy
本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 一.ORM介绍 如果写程序用pymysql和程序交互,那是不是要写原生sql语句 ...
- Django和SQLAlchemy,哪个Python ORM更好?
ORM是什么? 在介绍Python下的两个ORM框架(Django和SQLAlchemy)的区别之前,我们首先要充分了解ORM框架的用途. ORM代表对象关系映射.ORM中的每个单词解释了他们在实际项 ...
- 【Python】ORM框架SQLAlchemy的使用
ORM和SQLAlchemy简介 对象关系映射(Object Relational Mapping,简称ORM),简单的来说,ORM是将数据库中的表与面向对象语言中的类建立了一种对应的关系.然后我们操 ...
随机推荐
- Swift4.0复习结构体
1.基本语法: /** 定义了一个结构体 */ struct Structure { /// 一个常量存储式实例属性, /// 并直接为它初始化 let constProperty = /// ...
- jQuery插件——imgbox(点击图片查看大图)
需要的资源: 需要对应的js代码和css样式,大家可以通过www.htmldrive.net平台下载,也可以在我文章的底部下载.对应的资源如下,将资源引入页面(别忘了JQuery): 注意:jQuer ...
- 线性链条件随机场(CRF)的原理与实现
基本原理 损失函数 (线性链)CRF通常用于序列标注任务,对于输入序列\(x\)和标签序列\(y\),定义匹配分数: \[ s(x,y) = \sum_{i=0}^l T(y_i, y_{i+1}) ...
- urls 视图层
urls.py 路由层 路由与视图函数对应关系 >>> 路由层 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射 ...
- Python09之range函数(BIF内置函数)
具体语法: range(起始值,结束值,步进值) range() 其属于内置函数,不需要导入其他模块即可使用,直接在Python的IDLE直接可以使用. list(range(0,10)) [0, 1 ...
- TCP/IP协议图--TCP/IP基础
1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议.实际生活当中有时也确实就是指这两种协议.然而在很多情况下,它只是利用 IP 进行通信时所 ...
- gopacket 在 windows 上面遇到的问题
前阵子有个需求是使用 golang 抓包改包,我用到了 gopacket 这个包,但是出了一些小问题. 我按照网上的方法进行使用 OpenLive 抓包,发现并不行,报错 error open ada ...
- 关于window.location.hash的理解及其应用(转)
原文1:https://blog.csdn.net/zhuchuji/article/details/50736360 原文2(window.location.href和window.location ...
- layer.open自定义弹出位置
fixed:false,设置top才有效,待测试. 这个设置不起作用 var img = "<img src=\"/_temp/qrcodenet/m/book/book20 ...
- PEB TEB结构体使用
PEB TEB结构体使用一个可执行文件被OS加载到内存,并处理完成相关的模块加载,导入表处理……及其他必须处理后,形成一个进程.在OS内核中保存有一份关于这个进程的身份证信息,就是平常看到的HANDL ...