异常处理:


# 异常一: AttributeError,对象属性不存在
with engine.connect() as conn:trans = conn.begin()s = select([users])try:r = conn.execute(s)for record in r:print record.Passwordexcept AttributeError, e:print 'found errors: {0}'.format(e)trans.rollback()
# 异常二: IntegrityError,唯一约束错误
with engine.connect() as conn:trans = conn.begin()ins = users.insert().values(id=2,customer_number=2,username='limanman',email_address='xmdevops@vip.qq.com',phone='11011011011',password='2',created_on='2016-11-06',updated_on='2016-11-06',)from sqlalchemy.exc import IntegrityErrortry:res = conn.execute(ins)print 'values: {0}'.format(res.inserted_primary_key)except IntegrityError, e:print 'found errors: {0}'.format(e)trans.rollback()

说明: SQLAlchemy在运行中可能会抛出各种异常,但是最常见是AttributeError异常和IntegrityError异常,其实所有的异常类都可以在sqlalchemy.exc下面找到,通常我们会通过事务来防止异常数据的写入,当抛出异常时我们通过事务trans.rollback()回滚到trans = conn.begin()定义的事务开始位置.

反射技术:

1. 反射技术就是自动通过连接字符串加载已经存在的数据库,支持反射表/视图/索引/外键等,如反射还原表对象可以通过设置Table的autoload=True和autoload_with=engine实现


# 反射指定表
users = Table('users', metadata, autoload=True, autoload_with=engine)
print metadata.tables.keys()
print type(users), users, users.primary_key, dir(users)
# 反射整个库
metadata.reflect(bind=engine)
print metadata.tables.keys()
users = metadata.tables['users']
print type(users), users, users.primary_key, dir(users)

说明: 如上演示了常用于对已存在数据库/表/视图/索引自动加载,可通过Table(<tablename>, metadata, autoload=True, autoload_with=engine)来反射还原指定表对象,通过metadata.reflect(bind=engine)反射整个库,对已存在的数据库想切换至SQLAlchemy Core/ORM操作时是非常方便的,而且还可以后期动态添加索引,外键等

转载于:https://blog.51cto.com/xmdevops/1870104

基础入门_Python-模块和包.深入SQLAlchemy之事务回滚与反射还原对象?相关推荐

  1. 事务回滚什么意思 try_Spring事务管理(一)快速入门

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 说起事务,大家应该多多少少用过,尤其是在一个service方法中调用多次dao操作,我们一 ...

  2. 我的 MySQL 客户端:支持 pymysql / mysqlclient 双模块、自动重连、独创事务回滚装饰器

    torndb曾经是我非常喜欢使用的一个MySQL客户端,虽然不足300行代码,却支持pymysql/mysqlclient双模块,且能在连接失效时自动重连.torndb的函数封装也很有特色,相同的功能 ...

  3. python模块包教学_python模块和包

    模块和包 模块和包并不是新的语法,而是python中为了更好地对代码进行分块组织管理,所提供的一种代码规范.他们根据代码的功能将区别不大的代码放在一起管理,使大型程序的设计更加醒目,层次更加清晰. 1 ...

  4. Python学习-基础篇4 模块与包与常用模块

    一 模块介绍 1.什么是模块?#常见的场景:一个模块就是一个包含了一组功能的python文件,比如spam.py,模块名为spam,可以通过import spam使用.#在python中,模块的使用方 ...

  5. python 模块与包_Python 模块与包

    模块:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用python编写的代码(.py文件) 2.已被编 ...

  6. python好用的模块和包_Python模块和包详细讲解与实例分析

    一丶模块 我们经常说模块模块的,究竟什么是模块呢? 一个模块就是包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀 但其实import加载的模块分为四个通用类别: 1.使用Pyth ...

  7. python包和目录有什么不同_python模块和包的区别

    在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很 ...

  8. import pymysql 没有模块_python模块与包

    模块的概念 •模块是一个保存了Python代码的文件,其中可以包含变量.函数或类的定义,也可以包含其他各种Python语句.使用模块有以下3方面的优势. •(1)模块提高了代码的可维护性.在程序开发过 ...

  9. python package什么意思_Python模块、包(Package)概念与用法分析

    本文实例讲述了python模块.包(package)概念与用法.分享给大家供大家参考,具体如下: python中"模块"的概念 在开发中,我们会有很多函数,我们可以把这些函数都放到 ...

最新文章

  1. Redis Primer(1)基于JedisPool的Redis hset并发性能测试 - @钟超 · 技术博客专栏 - 博客频道 - CSDN.NET...
  2. python点到向量的距离,夹角
  3. Django Rest Framework源码剖析(二)-----权限
  4. workbook加载文件路径_通过Workbook.XML 修复Excel自定义名称
  5. GCD简介一:基本概念和Dispatch Queue
  6. 字符串匹配——RabinKarp算法
  7. 巨头切入,或将改变云客服市场
  8. go interface 转 string_深入理解Go的interface内部执行原理
  9. main()在C和C ++中应该返回什么?
  10. Linux下如何关闭命令行正在执行的程序或命令
  11. 证件照尺寸修改、图片背景换色、照片大小压缩…几个在线图片编辑、处理网站推荐
  12. Unity-MD5加密
  13. html swf转mp4,swf怎么转换成mp4 swf视频转换成mp4格式没有声音|转换成MP4格式没有画面...
  14. MyBatis 的一级缓存与二级缓存
  15. syslinux linux 启动盘,syslinux启动盘制作
  16. 看电影 - 国产凌凌漆
  17. 路由器 OSPF 路由汇总配置
  18. 各种标点符号的英文怎么念
  19. 2021-09-02
  20. 关于UEFI启动+GPT分区 的一些经验

热门文章

  1. 【Hadoop】MapReduce
  2. 强制换行word-break:break-all或者word-wrap:break-word都无效的解决方法
  3. 解决VS2017中使用scanf函数报错的问题
  4. 【ASP.NET 问题】IIS发布网站后出现 “处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误“的解决办法
  5. Vm下安装centos7.0时电脑进入黑屏的解决方法(选择Install Centos 7或者是Test this media install Centos 7以后,虚拟机屏幕立马就进入黑屏状态)
  6. 项目出现 The superclass “javax.servlet.http.HttpServlet“ was not found on the Java Build Path 解决方法
  7. 分表分库解决方案(mycat,tidb,shardingjdbc)
  8. 通过ng-change选择ng-object
  9. XmlSerializer保存xml文件android
  10. 能不能翻译PHP网站源码,有朋友可以帮忙用PHP翻译一段PYTHON代码吗?