为了账号安全,请及时绑定邮箱和手机立即绑定

Python操作MySQL数据库

蚂蚁帅帅 全栈工程师
难度初级
时长59分
学习人数
综合评分9.77
215人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.8 逻辑清晰
  • 查看全部
  • python DB API包含的内容:1、数据库连接对象connection 2、数据库交互对象cursor 3、 数据库异常类exception

    查看全部
    0 采集 收起 来源:Python DB API介绍

    2018-07-12

  • 1、数据库存储功能

    2、客户端,业务逻辑层,数据访问层,数据库(底层,核心技术)

    Python访问DB的官方接口规范

    Python开发DB程序的开发环境

    Python访问DB的connection,curor两大对象

    Python执行增,删,改,查操作的实例操作

    完整实例: 银行转账实现


    查看全部
  • 银行转账实例:账户A给账户B转账操作

    # coding:utf8
    import sys
    import MySQLdb
    
    def check_acct_available(self, acctid):
        cursor = self.conn.cursor()
        try:
            sql = "select * from account where acctid=%s" % acctid
            cursor.execute(sql)
            print "check_acct_available:" + 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
            rs = cursor.fetchall() #把结果集放入变量
            if cursor.rowcount != 1: #检验update看影响多少条数据!!
                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 "add_money:" + sql
            rs = cursor.fetchall() #把结果集放入变量
            if cursor.rowcount != 1: #检验update看影响多少条数据!!
                raise Exception("账号%s加款失败" % acctid)
        finally:
            cursor.close()
            
    class TransferMoney(object):
        def __init__(self, conn): #类的构造函数,传入参数conn
            self.conn = conn
        def transfer(self, source_acctid, target_acctid, money): #实现transfer方法
            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
        
    if __name__ == "__main__":  #脚本执行的入口
        source_acctid = sys.argv[1] #设置三个参数:付款人id,收款人id,转账金额
        target_acctid = sys.argv[2]
        money = sys.argv[3]
        
        conn = MySQLdb.Connect(host='127.0.0.1', user='root', passwd='123456', port=3306, db='imooc') #创建数据库的connection
        tr_money = TransferMoney(conn) #创建转账操作的对象,使用TransferMoney类来实现
        
        try:
            tr_money.transfer(source_acctid, target_acctid, money)
        except Exception as e:
            print "出现问题:" + str(e)
        finally: #无论如何,关闭连接
            conn.close()


    查看全部
  • mysql的存储引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。
    最常使用的2种存储引擎:
    1.Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD(MYData,存储数据)、.MYI(MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。
    2.InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

    查看全部
  • 事务:execute操作的集合

    提交:让事务中的所有操作同时生效-->正常结束事务conn.commit()

    回滚:整个操作的集合回到没有执行的状态-->异常结束事务conn.rollback

    查看全部
  • cursor方法

    查看全部
  • MySQLdb.Connect 参数

    查看全部
  • 为什么需要关闭 cursor  connection ?

    因为connection 是网络资源  如果不关闭的话  会造成数据库性能的问题

    查看全部
    0 采集 收起 来源:Python DB API介绍

    2018-06-22

  • Python DB API包含的内容

    查看全部
    0 采集 收起 来源:Python DB API介绍

    2018-06-22

  • Python    DB API :Python访问数据库的统一接口规范

    https://www.python.org/dev/peps/pep-0249/


    查看全部
    0 采集 收起 来源:Python DB API介绍

    2018-06-22

  • Python DB API  是为了解决接口程序混乱的局面的产物

    查看全部
    0 采集 收起 来源:Python DB API介绍

    2018-06-22

  • 课程介 绍  

    查看全部
  •                       数   据   流

    查看全部
  • Python访问数据库的统一接口规范:

        https://www.python.org/dev/peps/pep-0249

    查看全部
    0 采集 收起 来源:Python DB API介绍

    2018-06-21

举报

0/150
提交
取消
课程须知
本课程是Python语言开发的中级课程,您要具备以下知识: 1、Python编程基础语法; 2、MySQL数据库的基础知识;
老师告诉你能学到什么?
1、Python编写通用数据库程序的标准API规范; 2、Python开发MySQL程序的高效率开发环境和所需插件; 3、Python对MySQL实现增、删、改、查数据的代码写法; 4、完整的Python开发数据库程序的实例流程;

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!