day12 python学习随笔 中
SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。
Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如:
MySQL
-
Python
mysql
+
mysqldb:
/
/
<user>:<password>@<host>[:<port>]
/
<dbname>
pymysql
mysql
+
pymysql:
/
/
<username>:<password>@<host>
/
<dbname>[?<options>]
MySQL
-
Connector
mysql
+
mysqlconnector:
/
/
<user>:<password>@<host>[:<port>]
/
<dbname>
cx_Oracle
oracle
+
cx_oracle:
/
/
user:
pass
@host:port
/
dbname[?key
=
value&key
=
value...]
更多详见:http:
/
/
docs.sqlalchemy.org
/
en
/
latest
/
dialects
/
index.html
步骤一:
使用 Engine/ConnectionPooling/Dialect 进行数据库操作,Engine使用ConnectionPooling连接数据库,然后再通过Dialect执行SQL语句。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from
sqlalchemy
import
create_engine
engine
=
create_engine(
"mysql+mysqldb://root:123@127.0.0.1:3306/s11"
, max_overflow
=
5
)
engine.execute(
"INSERT INTO ts_test (a, b) VALUES ('2', 'v1')"
)
engine.execute(
"INSERT INTO ts_test (a, b) VALUES (%s, %s)"
,
((
555
,
"v1"
),(
666
,
"v1"
),)
)
engine.execute(
"INSERT INTO ts_test (a, b) VALUES (%(id)s, %(name)s)"
,
id
=
999
, name
=
"v1"
)
result
=
engine.execute(
'select * from ts_test'
)
result.fetchall()
#!/usr/bin/env python
# -*- coding:utf-8 -*-from sqlalchemy import create_engineengine = create_engine("mysql+mysqldb://root:123@127.0.0.1:3306/s11", max_overflow=5)# 事务操作
with engine.begin() as conn:conn.execute("insert into table (x, y, z) values (1, 2, 3)")conn.execute("my_special_procedure(5)")conn = engine.connect()
# 事务操作
with conn.begin():conn.execute("some statement", {'x':5, 'y':10})事务操作
注:查看数据库连接:show status like 'Threads%';
步骤二:
使用 Schema Type/SQL Expression Language/Engine/ConnectionPooling/Dialect 进行数据库操作。Engine使用Schema Type创建一个特定的结构对象,之后通过SQL Expression Language将该对象转换成SQL语句,然后通过 ConnectionPooling 连接数据库,再然后通过 Dialect 执行SQL,并获取结果。
#!/usr/bin/env python
# -*- coding:utf-8 -*-from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKeymetadata = MetaData()user = Table('user', metadata,Column('id', Integer, primary_key=True),Column('name', String(20)),
)color = Table('color', metadata,Column('id', Integer, primary_key=True),Column('name', String(20)),
)
engine = create_engine("mysql+mysqldb://root:123@127.0.0.1:3306/s11", max_overflow=5)metadata.create_all(engine)
# metadata.clear()
# metadata.remove()
#!/usr/bin/env python
# -*- coding:utf-8 -*-from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKeymetadata = MetaData()user = Table('user', metadata,Column('id', Integer, primary_key=True),Column('name', String(20)),
)color = Table('color', metadata,Column('id', Integer, primary_key=True),Column('name', String(20)),
)
engine = create_engine("mysql+mysqldb://root:123@127.0.0.1:3306/s11", max_overflow=5)conn = engine.connect()# 创建SQL语句,INSERT INTO "user" (id, name) VALUES (:id, :name)
conn.execute(user.insert(),{'id':7,'name':'seven'})
conn.close()# sql = user.insert().values(id=123, name='wu')
# conn.execute(sql)
# conn.close()# sql = user.delete().where(user.c.id > 1)# sql = user.update().values(fullname=user.c.name)
# sql = user.update().where(user.c.name == 'jack').values(name='ed')# sql = select([user, ])
# sql = select([user.c.id, ])
# sql = select([user.c.name, color.c.name]).where(user.c.id==color.c.id)
# sql = select([user.c.name]).order_by(user.c.name)
# sql = select([user]).group_by(user.c.name)# result = conn.execute(sql)
# print result.fetchall()
# conn.close()增删改查
更多内容详见:
http://www.jianshu.com/p/e6bba189fcbd
http://docs.sqlalchemy.org/en/latest/core/expression_api.html
注:SQLAlchemy无法修改表结构,如果需要可以使用SQLAlchemy开发者开源的另外一个软件Alembic来完成。
转载于:https://blog.51cto.com/jzzjw/1736509
day12 python学习随笔 中相关推荐
- Python学习(中一)
4. 深入 Python 流程控制 除了 Python学习(上)介绍的 while 语句,Python 还从其它语言借鉴了一些流程控制功能,并有所改变. 4.1. if 语句 也许最有名的是 if 语 ...
- 【Python学习随笔】依赖倒置原则 + 简单工厂模式
记录一下Python学习中的点滴,分享一段代码. [问题背景]在不同的系统平台需要执行一段有差异的指令,该如何写出更优雅的代码? [知识点]依赖倒置原则 + 简单工厂模式 [代码分享] #!/usr/ ...
- day1 python学习随笔
近期在学习python,准备用博客的方式记录python学习中的成长.希望能就此激励自己奋发图强. 一. python介绍 1.详解. 转自百度百科 Python(英语发音:/paθn/) ...
- python学习004-----python中%s的各种用法
在python输出语句中,我们常用到"%s"符号.%s作用是将对象传到str()方法中进行处理,输出字符串.例如: str = '12345' print("下面输出一串 ...
- python学习随笔:python中的类
python中的类 # 以Student 为类的名称(类名)有一个或多个单词组成,每个单词的首字母大写,其余小写 class Student:native_pace = '成都' # 直接写在类里的变 ...
- python类定义中__init__()_转:python学习——类中为什么要定义__init__()方法
学习Python的类,一直不太理解为什么一定要定义init()方法,现在简要谈一下自己的理解吧. 1.不用init()方法定义类 定义一个矩形的类,目的是求周长和面积. 1 classRectangl ...
- Python学习随笔
目录 一.Python-初识 二.Python-数据结构 2.1.序列(List) 2.2.元组(Tuple) 2.3.字典(Dict) 2.4.集合(Set) 三.Python-面向对象编程 3.1 ...
- python学习随笔(七)_函数
函数 #作用:封装和复用 数学定义:y=f(x) ,y是x的函数,x是自变量.y=f(x0, x1, ..., xn) Python函数 由若干语句组成的语句块. ...
- python学习随笔--web框架
Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:utf- ...
最新文章
- android notification 定时显示,Android编程使用Service实现Notification定时发送功能示例...
- windows server 2008 R2 初试Hyper-V(一)
- Detectron-MaskRCnn: 用于抠图的FCNN
- 页面滚动时触发图片逐帧播放_如何在滚动效果上创建逐帧运动图像
- 2020年的风口来了!传统企业如何做数字化转型?
- 音乐播放器的设计与实现
- 区块链和比特币的 6 个神话:揭穿了这项技术的有效性
- OpenCV中IplImage与Qt中的QImage转化
- 使用swix反编译swf文件修改版权
- 雷达线性调频信号的脉冲压缩处理
- STM32MP157 u-boot2021.10移植
- 监督学习、无监督学习、强化学习概念
- Final IK详解
- NVIDIA TK1 学习笔记(1):TK1介绍
- Linux僵尸进程堆栈分析,linux系统僵尸进程
- 英语每日听写练习 Day 19
- win7计算机锁频图片怎么设置,win7锁屏壁纸怎么换_win7更换锁屏壁纸的操作方法...
- SDN北向接口之REST API
- 脑动力PHP函数速查效率手册pdf
- 枚举类型的理解和应用
热门文章
- 时态数据库的应用介绍(1)
- 如何为自己找到合适的销售工作?
- 两篇介绍IIS的文章
- 手机当中的wifi功能是什么意思?
- 《Ray Tracing in One Weekend》——Chapter 10: Positionable camera
- c语言strTrimed函数用法介绍,c语言对字符串实现高效trim函数
- 大数据行业发展迅速的原因
- eSIM物联网卡的优点有哪些
- C++算法学习(力扣:1091. 二进制矩阵中的最短路径)
- linux yum 安装播放器,centos6.5 常用影音播放器安装