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 转向 Go语言有人给出了 9 大理由
Oct 20 Python
利用Python进行数据可视化常见的9种方法!超实用!
Jul 11 Python
python+opencv实现阈值分割
Dec 26 Python
python语言基本语句用法总结
Jun 11 Python
简单了解python gevent 协程使用及作用
Jul 22 Python
Python使用python-docx读写word文档
Aug 26 Python
Django中的FBV和CBV用法详解
Sep 15 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
python实现手势识别的示例(入门)
Apr 15 Python
如何用python免费看美剧
Aug 11 Python
手把手教你将Flask应用封装成Docker服务的实现
Aug 19 Python
Python闭包的定义和使用方法
Apr 11 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之第九天
2006/10/09 PHP
php为什么选mysql作为数据库? Mysql 创建用户方法
2007/07/02 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
PHP抽象类和接口用法实例详解
2019/07/20 PHP
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
python 字符串格式化代码
2013/03/17 Python
python写入中英文字符串到文件的方法
2015/05/06 Python
python实现在pandas.DataFrame添加一行
2018/04/04 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
django使用LDAP验证的方法示例
2018/12/10 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
Python map及filter函数使用方法解析
2020/08/06 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
便利店投资创业计划书
2014/02/08 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL
javascript数组includes、reduce的基本使用
2021/07/02 Javascript
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技