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 相关文章推荐
Google开源的Python格式化工具YAPF的安装和使用教程
May 31 Python
python快速建立超简单的web服务器的实现方法
Feb 17 Python
python list删除元素时要注意的坑点分享
Apr 18 Python
Django中反向生成models.py的实例讲解
May 30 Python
Python global全局变量函数详解
Sep 18 Python
python ddt数据驱动最简实例代码
Feb 22 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
python matplotlib如何给图中的点加标签
Nov 14 Python
Python使用文件操作实现一个XX信息管理系统的示例
Jul 02 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
Jan 05 Python
python 30行代码实现蚂蚁森林自动偷能量
Feb 08 Python
Python初学者必备的文件读写指南
Jun 23 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在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
探讨GDFONTPATH能否被winxp下的php支持
2013/06/21 PHP
PHP中的Memcache详解
2014/04/05 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
JQuery页面地址处理插件jqURL详解
2015/05/03 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
python在linux中输出带颜色的文字的方法
2014/06/19 Python
在Python中调用ggplot的三种方法
2015/04/08 Python
详解在Python中处理异常的教程
2015/05/24 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
Python多线程模块Threading用法示例小结
2019/11/09 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
介绍一下常见的木马种类
2014/11/15 面试题
人事文员岗位职责
2014/02/16 职场文书
酒店节能减排方案
2014/05/26 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
个人委托书范文
2015/01/28 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python
Mysql开启外网访问
2022/05/15 MySQL