python实现的MySQL增删改查操作实例小结


Posted in Python onDecember 19, 2018

本文实例总结了python实现的MySQL增删改查操作。分享给大家供大家参考,具体如下:

代码片段一

连接并执行sql

#encoding:UTF-8
import MySQLdb
conn = MySQLdb.Connect(
  host = '127.0.0.1',
  port = 3306,
  user = 'root',
  passwd='123456',
  db='imooc',
  charset='utf8'
)
cursor = conn.cursor()
print conn
print cursor
sql = "select * from user"
cursor.execute(sql) #执行

取数据

print cursor.rowcount
#取数据
#fetchone()获取一条数据
#fetchany(3)获取多条
#fetchall()#获取客户缓冲区的所有数据
# rs = cursor.fetchone()
# print rs
#
# rs = cursor.fetchmany(2)
# print rs
#
# rs = cursor.fetchall()
# print rs
# rs = cursor.fetchall()
# for row in rs:
#   print "userid=%s,username=%s" % row

更新数据库

# sql_insert = "insert into user(userid,username) values(10,'name10')"
# sql_update = "update user set username='name91' where userid=9"
# sql_delete = "delete from user where userid<3"
# cursor.execute(sql_insert)
# cursor.execute(sql_update)
# cursor.execute(sql_delete)
# #执行完后提交
# conn.commit()
# #发生异常时回滚
# try:
#   sql_insert = "insert into user(userid,username) values(10,'name10')"
#   sql_update = "update user set username='name91' where userid=9"
#   sql_delete = "delete from user where userid<3"
#   cursor.execute(sql_insert)
#   cursor.execute(sql_update)
#   cursor.execute(sql_delete)
#   conn.commit()
# except Exception as e:
#   print e
#   conn.rollback()
cursor.close()
conn.close()

代码片段2 银行实例

#coding:UTF-8
import sys
import MySQLdb
class TransferMoney(object):
  def __init__(self,conn):
    self.conn = conn
  def tranfer(self,source_acctid,target_acctid,money):
    try:
      self.check_acct_available(source_acctid)
      self.check_acct_available(target_acctid)
      self.has_enough_money(source_acctid,money)
      self.reduce_money(source_acctid,money)
      self.add_money(target_acctid,money)
      self.conn.commit()
    except Exception as e:
      self.conn.rollback()
      raise e
  def check_acct_available(self, acctid):
    cursor = self.conn.cursor()
    try:
      sql = "select * from account where acctid=%s"%acctid
      cursor.execute(sql)
      rs = cursor.fetchall()
      if len(rs)!=1:
        raise Exception("账号%s不存在"%acctid)
    finally:
      cursor.close()
  def has_enough_money(self, acctid, money):
    cursor = self.conn.cursor()
    try:
      sql = "select * from account where acctid=%s and money>%s" % (acctid,money)
      cursor.execute(sql)
      print "has_enough_money:"+sql
      rs = cursor.fetchall()
      if len(rs) != 1:
        raise Exception("账号%s没有足够的钱" % acctid)
    finally:
      cursor.close()
  def reduce_money(self, acctid, money):
    cursor = self.conn.cursor()
    try:
      sql = "update account set money=money-%s where acctid=%s" % (money,acctid)
      cursor.execute(sql)
      print "reduce_money:"+sql
      if cursor.rowcount != 1:
        raise Exception("账号%s减款失败" % acctid)
    finally:
      cursor.close()
  def add_money(self, acctid, money):
    cursor = self.conn.cursor()
    try:
      sql = "update account set money=money+%s where acctid=%s" % (money, acctid)
      cursor.execute(sql)
      print "reduce_money:" + sql
      if cursor.rowcount != 1:
        raise Exception("账号%s加款失败" % acctid)
    finally:
      cursor.close()
if __name__ == "__main__":
  source_acctid = sys.argv[1]
  target_acctid = sys.argv[2]
  money = sys.argv[3]
  conn = MySQLdb.Connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    passwd='123456',
    db='imooc',
    charset='utf8'
  )
  tr_money = TransferMoney(conn)
  try:
    tr_money.tranfer(source_acctid,target_acctid,money)
  except Exception as e:
    print "出现问题了" + str(e)
  finally:
    conn.close()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python 字符串操作实现代码(截取/替换/查找/分割)
Jun 08 Python
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
python实现将元祖转换成数组的方法
May 04 Python
python压缩文件夹内所有文件为zip文件的方法
Jun 20 Python
小小聊天室Python代码实现
Aug 17 Python
Python编程对列表中字典元素进行排序的方法详解
May 26 Python
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
Python实现将照片变成卡通图片的方法【基于opencv】
Jan 17 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
python 邮件检测工具mmpi的使用
Jan 04 Python
python3 http提交json参数并获取返回值的方法
Dec 19 #Python
python3.6使用urllib完成下载的实例
Dec 19 #Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 #Python
对python内置map和six.moves.map的区别详解
Dec 19 #Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 #Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 #Python
对python3标准库httpclient的使用详解
Dec 18 #Python
You might like
Terran热键控制
2020/03/14 星际争霸
PHP面向对象分析设计的经验原则
2008/09/20 PHP
8个必备的PHP功能开发
2015/10/02 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
node和vue实现商城用户地址模块
2018/12/05 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
[40:05]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python使用itchat实现手机控制电脑
2018/02/22 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
python实现静态服务器
2019/09/05 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
全球精选男装和家居用品:Article
2020/04/13 全球购物
大学生求职简历的自我评价
2013/10/14 职场文书
大三学生入党思想汇报
2014/01/02 职场文书
妇联主席先进事迹
2014/05/18 职场文书
小学运动会开幕词
2015/01/28 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书