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 04 Python
使用python脚本实现查询火车票工具
Jul 19 Python
基于Python实现用户管理系统
Feb 26 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
python画图--输出指定像素点的颜色值方法
Jul 03 Python
Python中面向对象你应该知道的一下知识
Jul 10 Python
python 装饰器功能与用法案例详解
Mar 06 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 Python
用python制作个音乐下载器
Jan 30 Python
教你如何使用Python Tkinter库制作记事本
Jun 10 Python
如何利用python实现Simhash算法
Jun 28 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
php $_ENV为空的原因分析
2009/06/01 PHP
PHP url 加密解密函数代码
2011/08/26 PHP
php中使用websocket详解
2016/09/23 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
JS操作图片(增,删,改) 例子
2013/04/17 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
2017/01/10 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
jQuery+ajax实现文件上传功能
2020/12/22 jQuery
python 生成器协程运算实例
2017/09/04 Python
python针对excel的操作技巧
2018/03/13 Python
Python 将pdf转成图片的方法
2018/04/23 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
工业设计专业推荐信
2013/10/29 职场文书
初中同学聚会邀请函
2014/02/03 职场文书
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
目标责任书范本
2014/04/16 职场文书
厂区绿化方案
2014/05/08 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
商场促销活动总结
2014/07/10 职场文书
2014最新离职证明范本
2014/09/12 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
赞美教师的句子
2019/09/02 职场文书
TypeScript 内置高级类型编程示例
2022/09/23 Javascript