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 多线程Threading初学教程
Aug 22 Python
用pandas按列合并两个文件的实例
Apr 12 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
Aug 03 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
Python中fnmatch模块的使用详情
Nov 30 Python
pytorch 调整某一维度数据顺序的方法
Dec 08 Python
Python按钮的响应事件详解
Mar 04 Python
Python re 模块findall() 函数返回值展现方式解析
Aug 09 Python
python获取依赖包和安装依赖包教程
Feb 13 Python
Python3 shutil(高级文件操作模块)实例用法总结
Feb 19 Python
Python实现获取当前目录下文件名代码详解
Mar 10 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 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
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
php随机显示图片的简单示例
2014/02/15 PHP
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
javascript级联下拉列表实例代码(自写)
2013/05/10 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
AngularJS在IE8的不支持的解决方法
2016/05/13 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
python 迭代器和iter()函数详解及实例
2017/03/21 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
python Matplotlib模块的使用
2020/09/16 Python
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
停电调休通知
2015/04/16 职场文书
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers