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执行shell获取硬件参数写入mysql的方法
Dec 29 Python
分析Python编程时利用wxPython来支持多线程的方法
Apr 07 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
Python+django实现文件上传
Jan 17 Python
举例讲解Python编程中对线程锁的使用
Jul 12 Python
python实现八大排序算法(2)
Sep 14 Python
django1.11.1 models 数据库同步方法
May 30 Python
python实现求两个字符串的最长公共子串方法
Jul 20 Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
calendar在python3时间中常用函数举例详解
Nov 18 Python
Python如何加载模型并查看网络
Jul 15 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
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
c#中的实现php中的preg_replace
2009/12/21 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
PHP通用检测函数集合
2011/02/08 PHP
PHP判断指定时间段的2个方法
2014/03/14 PHP
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
PHP自定义多进制的方法
2016/11/03 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
javascript静态的url如何传递
2007/05/03 Javascript
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
js中函数声明与函数表达式
2015/06/03 Javascript
跟我学习javascript的var预解析与函数声明提升
2015/11/16 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
2018/05/08 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
vue中activated的用法
2021/01/03 Vue.js
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
Keras 使用 Lambda层详解
2020/06/10 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
Footshop法国:购买运动鞋
2020/01/19 全球购物
会计毕业生自荐信
2013/11/21 职场文书
健康状况证明模板
2014/10/23 职场文书
教师求职自荐信
2015/03/26 职场文书
开票证明
2015/06/23 职场文书