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学习随笔 中相关推荐

  1. Python学习(中一)

    4. 深入 Python 流程控制 除了 Python学习(上)介绍的 while 语句,Python 还从其它语言借鉴了一些流程控制功能,并有所改变. 4.1. if 语句 也许最有名的是 if 语 ...

  2. 【Python学习随笔】依赖倒置原则 + 简单工厂模式

    记录一下Python学习中的点滴,分享一段代码. [问题背景]在不同的系统平台需要执行一段有差异的指令,该如何写出更优雅的代码? [知识点]依赖倒置原则 + 简单工厂模式 [代码分享] #!/usr/ ...

  3. day1 python学习随笔

    近期在学习python,准备用博客的方式记录python学习中的成长.希望能就此激励自己奋发图强. 一. python介绍      1.详解. 转自百度百科  Python(英语发音:/paθn/) ...

  4. python学习004-----python中%s的各种用法

    在python输出语句中,我们常用到"%s"符号.%s作用是将对象传到str()方法中进行处理,输出字符串.例如: str = '12345' print("下面输出一串 ...

  5. python学习随笔:python中的类

    python中的类 # 以Student 为类的名称(类名)有一个或多个单词组成,每个单词的首字母大写,其余小写 class Student:native_pace = '成都' # 直接写在类里的变 ...

  6. python类定义中__init__()_转:python学习——类中为什么要定义__init__()方法

    学习Python的类,一直不太理解为什么一定要定义init()方法,现在简要谈一下自己的理解吧. 1.不用init()方法定义类 定义一个矩形的类,目的是求周长和面积. 1 classRectangl ...

  7. Python学习随笔

    目录 一.Python-初识 二.Python-数据结构 2.1.序列(List) 2.2.元组(Tuple) 2.3.字典(Dict) 2.4.集合(Set) 三.Python-面向对象编程 3.1 ...

  8. python学习随笔(七)_函数

    函数    #作用:封装和复用     数学定义:y=f(x) ,y是x的函数,x是自变量.y=f(x0, x1, ..., xn)     Python函数         由若干语句组成的语句块. ...

  9. python学习随笔--web框架

    Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:utf- ...

最新文章

  1. android notification 定时显示,Android编程使用Service实现Notification定时发送功能示例...
  2. windows server 2008 R2 初试Hyper-V(一)
  3. Detectron-MaskRCnn: 用于抠图的FCNN
  4. 页面滚动时触发图片逐帧播放_如何在滚动效果上创建逐帧运动图像
  5. 2020年的风口来了!传统企业如何做数字化转型?
  6. 音乐播放器的设计与实现
  7. 区块链和比特币的 6 个神话:揭穿了这项技术的有效性
  8. OpenCV中IplImage与Qt中的QImage转化
  9. 使用swix反编译swf文件修改版权
  10. 雷达线性调频信号的脉冲压缩处理
  11. STM32MP157 u-boot2021.10移植
  12. 监督学习、无监督学习、强化学习概念
  13. Final IK详解
  14. NVIDIA TK1 学习笔记(1):TK1介绍
  15. Linux僵尸进程堆栈分析,linux系统僵尸进程
  16. 英语每日听写练习 Day 19
  17. win7计算机锁频图片怎么设置,win7锁屏壁纸怎么换_win7更换锁屏壁纸的操作方法...
  18. SDN北向接口之REST API
  19. 脑动力PHP函数速查效率手册pdf
  20. 枚举类型的理解和应用

热门文章

  1. 时态数据库的应用介绍(1)
  2. 如何为自己找到合适的销售工作?
  3. 两篇介绍IIS的文章
  4. 手机当中的wifi功能是什么意思?
  5. 《Ray Tracing in One Weekend》——Chapter 10: Positionable camera
  6. c语言strTrimed函数用法介绍,c语言对字符串实现高效trim函数
  7. 大数据行业发展迅速的原因
  8. eSIM物联网卡的优点有哪些
  9. C++算法学习(力扣:1091. 二进制矩阵中的最短路径)
  10. linux yum 安装播放器,centos6.5 常用影音播放器安装