python操作mysql数据库练习

  本次练习是在windows下,mysql版本为5.7,python版本为2.7.5,集成环境为pycharm。

  创建表时,enign在innodb下支持事务,其他可能不支持。

create table account(accid int(11) default null ,money int(11) default null
)engine=innodb;

一、测试环境

 1 #coding=utf-8
 2 import MySQLdb
 3
 4 conn=MySQLdb.connect(host='127.0.0.1',port=3306,user='root',passwd='771994001o',db='immc',charset='utf8')
 5 cursor=conn.cursor()
 6
 7 print conn
 8 print cursor
 9
10 cursor.close()
11 conn.close()

二、相关函数

#支持execute()执行一个数据库查询命令,执行sql,将结果从数据库放回到客户端#fetchon()取结果集的下一行,移动rownumbr,返回数据# fetchmany()取结果集的下几行# fetchall()取结果集中的剩余所有行# rowcount()最近一次execute返回数据的行数或影响行数# close()关闭游标对象

三、使用select查询数据

 1 conn=MySQLdb.connect(host='127.0.0.1',port=3306,user='root',passwd='771994001o',db='immc',charset='utf8')
 2 cursor=conn.cursor()
 3
 4 sql="select * from manager"
 5 cursor.execute(sql)
 6 print cursor.rowcount
 7
 8 rs=cursor.fetchone()
 9 print rs
10 print rs[1]
11
12 rs=cursor.fetchmany(3)
13 print rs
14
15 rs=cursor.fetchall()
16 print rs
17
18 cursor.close()
19 conn.close()
20
21
22 conn=MySQLdb.connect(host='127.0.0.1',port=3306,user='root',passwd='771994001o',db='immc',charset='utf8')
23 cursor=conn.cursor()
24
25 sql="select * from manager"
26 cursor.execute(sql)
27
28 rs=cursor.fetchall()
29 for row in rs:
30     print "UserId:%s,UserName:%s" %row
31
32 cursor.close()
33 conn.close()

四、更新数据库

 1 conn=MySQLdb.connect(host='127.0.0.1',port=3306,user='root',passwd='771994001o',db='immc',charset='utf8')
 2 cursor=conn.cursor()
 3
 4 sql_insert="insert into manager values(10010,'李隆基')"
 5 sql_update="update manager set name='李开' where id=10023"
 6 sql_delete="delete from manager where d<1003"
 7
 8 try:
 9     cursor.execute(sql_insert)
10     print cursor.rowcount
11     cursor.execute(sql_update)
12     print cursor.rowcount
13     cursor.execute(sql_delete)
14     print cursor.rowcount
15 except Exception as e:
16     print e
17     conn.rollback()
18
19 conn.commit()
20
21 cursor.close()
22 conn.close()

五、实例演练

开始事务-检测A和B账户是否可用-检测账户A是否有100块-账户A减去100快,账户B加上100块-提交事务
 1 import sys
 2 class TransfrMoney(object):
 3     def __init__(self,conn):
 4         self.conn=conn
 5     def transfer(self,source_accid,target_accid,money):
 6         try:
 7             self.check_acct_available(source_accid)
 8             self.check_acct_available(target_accid)
 9             self.enough_moner(source_accid,money)
10             self.reduce_money(source_accid,money)
11             self.add_money(target_accid,money)
12             self.conn.commit()
13         except Exception as e:
14             self.conn.rollback()
15             raise e
16
17     def check_acct_available(self,accid):
18         cursor = self.conn.cursor()
19         try:
20             sql = "select * from account where accid=%s" % accid
21             cursor.execute(sql)
22             print "check_acct_available:"+sql
23             rs = cursor.fetchall()
24             if len(rs) != 1:
25                 raise Exception("账号%s不存在" % accid)
26         finally:
27             cursor.close()
28
29     def enough_moner(self,accid, money):
30         cursor = self.conn.cursor()
31         try:
32             sql = "select * from account where accid=%s and money >=%s" %(accid,money)
33             cursor.execute(sql)
34             print "enough_moner:" + sql
35             rs = cursor.fetchall()
36             if len(rs) != 1:
37                 raise Exception("账号%s没有足够的钱" % accid)
38         finally:
39             cursor.close()
40     def reduce_money(self,accid,money):
41         cursor = self.conn.cursor()
42         try:
43             sql = "update account set money =money-%s where accid=%s" % (money, accid)
44             cursor.execute(sql)
45             print "reduce_money:" + sql
46             rs = cursor.fetchall()
47             if cursor.rowcount != 1:
48                 raise Exception("账号%s减款失败" % accid)
49         finally:
50             cursor.close()
51     def add_money(self,accid,money):
52         cursor = self.conn.cursor()
53         try:
54             sql = "update account set money =money+%s where accid=%s" % (money, accid)
55             cursor.execute(sql)
56             print "add_money:" + sql
57             rs = cursor.fetchall()
58             if cursor.rowcount != 1:
59                 raise Exception("账号%s加款失败" % accid)
60         finally:
61             cursor.close()
62
63 if __name__=="__main__":
64     source_accid=sys.argv[1]
65     target_accid=sys.argv[2]
66     money=sys.argv[3]
67
68 conn=MySQLdb.connect(host='127.0.0.1',port=3306,user='root',passwd='771994001o',db='immc',charset='utf8')
69 tr_money=TransfrMoney(conn)
70 try:
71     tr_money.transfer(source_accid,target_accid,money)
72 except Exception as e:
73     print "出现问题"+str(e)
74 finally:
75     conn.close()

  点击run——Edit Configuratopn...---Scrip parameters选项输入测试数据。

2017-03-13 16:58:35

转载于:https://www.cnblogs.com/chance88/p/6543783.html

python操作mysql数据库练习相关推荐

  1. python操作mysql数据库的常用方法使用详解

    python操作mysql数据库 1.环境准备: Linux 安装mysql: apt-get install mysql-server 安装python-mysql模块:apt-get instal ...

  2. Python操作mySql数据库封装类

    这是自己在做项目过程中,整理封装的操作mysql数据库封装类,自己可以修改下使用,节省大量时间. myGlobal.py # -*- coding: utf-8 -*-global globalLis ...

  3. python操作mysql数据库(增、删、改、查)_python对 MySQL 数据库进行增删改查的脚本...

    # -*- coding: utf-8 -*- import pymysql import xlrd # import codecs #连接数据库 conn = pymysql.connect(hos ...

  4. python 天气预报 mysql_python + docker, 实现天气数据 从FTP获取以及持久化(二)-- python操作MySQL数据库...

    前言 在这一节中,我们主要介绍如何使用python操作MySQL数据库. 准备 MySQL数据库使用的是上一节中的docker容器 "test-mysql". Python 操作 ...

  5. python操作mysql中的表_带你了解什么是Python操作MySQL数据库

    写这篇文章主要是为了介绍Python操作MySQL数据库,并结合相应的实例带你更加深入了解.文中的代码实例很详细,对大家有一定的参考学习价值. 1.什么是pymysql? PyMySQL是在Pytho ...

  6. imooc的疯狂的蚂蚁的课程《Python操作MySQL数据库》 python3+pymysql模块来操作mysql数据库

    以下代码为imooc的疯狂的蚂蚁的课程<Python操作MySQL数据库>的python3版本的代码,使用的是pymysql模块来操作mysql数据库,代码与原课程有所改动,注意运行时需要 ...

  7. python操作mysql数据库用到的fetchone()函数和fetchall()函数

    在用python操作mysql数据库时,碰到了下面这两个函数,标记一下: fetchone() : 返回单个的元组,也就是一条记录(row),如果没有结果 则返回 None fetchall() : ...

  8. python操作mysql数据库实现增删改查

    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: ...

  9. 4000字,详解 Python 操作 MySQL 数据库!

    作者 | 黄伟呢 出品 | 数据分析与统计学之美 本文的重点,就是教会大家,如何用Python来操作MySQL数据库. 1. 通用步骤 其实,这里有一个通用步骤,都是写死了的,大家照做就行. # 1. ...

最新文章

  1. 用 Python 帮运营妹纸快速搞定 Excel 文档
  2. linux安装mysql5.7自己初始化_linux系统安装mysql5.7步骤
  3. 用Tableau制作3D旋转地球
  4. IP Messenger程序
  5. VTK:PolyData之MiscCellData
  6. 二叉树的前中后序遍历之迭代法(非统一风格迭代方式)
  7. 使用 C++的第三方库 jsoncpp的步骤以及出现的问题
  8. android tcp ip modem ppp gprs,为什么GPRS调制解调器提供嵌入式TCP/IP协议栈
  9. Q: 为什么如果我们把这两个组件安装在同一个COM+组件包中问题就不会出现(zz)...
  10. 微信撤回软件安卓版_微信强制撤回app
  11. win10设置打开闪退怎么办 电脑windows10设置打开闪退解决方法
  12. Jmeter编码格式
  13. iphone/ipad保存图片问题(已解决)
  14. 如何删除计算机guest用户,win7如何删掉Guest账户?win7删除Guest账户方法
  15. python开发的项目管理软件_10 个超好用的免费开源项目管理软件
  16. dellR720运用U盘安装windows2008R2系统指导
  17. html5文字跳动特效,jQuery网页文字跳动动画特效
  18. Java面试——多线程高并发
  19. 山药粥营养价值好处有哪些 山药粥的功效与作用
  20. 2023 thinkphp 福娃交易网站系统源码

热门文章

  1. No.14 交易平台初探【交易平台系列①】
  2. 在Windows上编译FreeRDP
  3. 计算机网络_互联网的标准化工作及相关组织
  4. MicroStation:MDL常用API(持续更新)
  5. FFmpeg 开发(12):Android FFmpeg 实现带滤镜的微信小视频录制功能
  6. echarts,柱状图配置,legend
  7. 基于Python,OpenCV,Numpy和Albumentations实现目标检测的合成数据集
  8. 基于Python,OpenCV,Numpy和Albumentations实现关键点检测的合成数据集
  9. 一年之计在于春,一日之计在于晨,头条android面试节奏
  10. unity3d摄像机