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

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pymysql,sys

class TransferMoney(object):
    def __init__(self,conn):
        self.conn=conn
        
    def transfer(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)
            print('check_acct_available:',acctid)
            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'%acctid
            cursor.execute(sql)
            print('has_enough_money:',acctid)
            rs=cursor.fetchone()
            if rs[1]<money:
                raise Exception('账号%s金额小于%s,无法转账'%(acctid,money))
        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:',acctid,money)
            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('add_money:',acctid,money)
            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=int(sys.argv[3])

    conn=pymysql.Connection(host='127.0.0.1',port=3306,user='root',passwd='xiang518',db='imooc',charset='utf8')
    tr_money=TransferMoney(conn)
    try:
        tr_money.transfer(source_acctid,target_acctid,money)
    except Exception as e:
        print('出现问题!'+str(e))
    finally:
        conn.close()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python可以通过pymysql模块来连接MySQL数据库,具体步骤如下: 1. 安装pymysql模块 可以通过以下命令来安装pymysql模块: ``` pip install pymysql ``` 2. 连接MySQL数据库 可以使用以下代码来连接MySQL数据库: ``` import pymysql # 打开数据库连接 db = pymysql.connect("host", "username", "password", "database") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL 查询 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法获取单条数据. data = cursor.fetchone() print("Database version : %s " % data) # 关闭数据库连接 db.close() ``` 其中,host为MySQL服务器地址,username为MySQL登录用户名,password为MySQL登录密码,database为要连接的数据库名称。以上代码连接成功后,输出数据库版本号。 3. 执行SQL语句 可以使用execute()方法来执行SQL语句,例如: ``` import pymysql # 打开数据库连接 db = pymysql.connect("host", "username", "password", "database") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 执行SQL语句 sql = "SELECT * FROM books" cursor.execute(sql) # 获取所有数据 results = cursor.fetchall() for row in results: id = row[0] title = row[1] author = row[2] price = row[3] print("id=%d,title=%s,author=%s,price=%f" % (id, title, author, price)) # 关闭数据库连接 db.close() ``` 以上代码执行了一个查询语句,查询books表中的所有数据,并输出到控制台。 4. 插入数据 可以使用execute()方法来执行插入数据的SQL语句,例如: ``` import pymysql # 打开数据库连接 db = pymysql.connect("host", "username", "password", "database") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 插入数据 sql = "INSERT INTO books (title, author, price) VALUES ('Python编程', '张三', 29.99)" cursor.execute(sql) # 提交事务 db.commit() # 关闭数据库连接 db.close() ``` 以上代码向books表中插入了一条数据,提交事务后关闭数据库连接。 以上是使用Python连接MySQL数据库的简单示例,可以根据实际需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值