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 相关文章推荐
Web服务器框架 Tornado简介
Jul 16 Python
Python实现将16进制字符串转化为ascii字符的方法分析
Jul 21 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
Aug 30 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
Python-OpenCV基本操作方法详解
Apr 02 Python
利用pandas进行大文件计数处理的方法
Jul 25 Python
面向初学者的Python编辑器Mu
Oct 08 Python
python实现windows壁纸定期更换功能
Jan 21 Python
Python增强赋值和共享引用注意事项小结
May 28 Python
python利用re,bs4,requests模块获取股票数据
Jul 29 Python
Python作用域与名字空间原理详解
Mar 21 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 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
域名和cookie问题(域名后缀)
2012/10/10 PHP
一个简单的php路由类
2016/05/29 PHP
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
jQuery为动态生成的select元素添加事件的方法
2016/08/29 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
2019/03/29 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
深入浅析python 中的匿名函数
2018/05/21 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
2018/11/14 Python
关于Django Models CharField 参数说明
2020/03/31 Python
python绘制雷达图实例讲解
2021/01/03 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
iostream与iostream.h的区别
2015/01/16 面试题
个人自我鉴定范文
2013/10/04 职场文书
业务助理岗位职责
2013/11/18 职场文书
英语生日邀请函
2014/01/23 职场文书
个人评语大全
2014/05/04 职场文书
2014年四风个人对照检查及整改措施
2014/10/28 职场文书
校本培训个人总结
2015/02/28 职场文书
2015年校务公开工作总结
2015/05/26 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技