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

Python操作MySQL数据库

蚂蚁帅帅 全栈工程师
难度初级
时长59分
学习人数
综合评分9.77
215人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.8 逻辑清晰
  • Hoe
    虽然大家可能在python2.x中用习惯了mysqldb,但是在python3.x中已经不支持那个组件了。取而代之的是pymysql Python 3.6.1 安装pymysql 1.需要安装 wheel 安装wheel之后就可以安装本地 *.whl安装包 # pip install wheel 2.把pymysql下载到本地 地址:https://pypi.python.org/pypi/PyMySQL#downloads 3.进入本地包的目录进行安装 # pip install PyMySQL-0.7.11-py2.py3-none-any.whl 4.完成测试下 # import pymysql; # print(pymysql); 会看到pymysql的模块信息
    查看全部
  • 银行转账实例:账户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()


    查看全部
  • python版本为 3.6

    在命令行使用命令安装:pip install PyMySQL

    然后命令行中 import pymysql正常,但是在pycharm中报错“ModuleNotFoundError: No module named 'pymysql'”

    解决: 在file->setting->project:...->project Interpreter->选择安装的python.exe

    https://img1.sycdn.imooc.com//5af167a9000118b010100332.jpg

    另外:

    https://img1.sycdn.imooc.com//5af167d50001fc8109980276.jpg

    查看全部
  • 自顶向下,先抽像后具体是一种很好的编程方式。 事务就是一组sql操作,把所有的数据库操作放在一组try...catch...语句中,全部执行成功则commit,抛出异常就rollback 通过判断fetchall()返回结果的长度(是否等于1)来判断查询值是否存在,查询金额是否足够直接通过sql判断。 通过cursor.rowcount判断数据库操作影响的行数判断是否加款减款成功 cursor.rowcount != 1则抛出异常
    查看全部
  • python3.5安装PyMySQL pip install wheel https://pypi.python.org/pypi/PyMySQL#downloads 下载文件 F:\pycharm>pip install PyMySQL-0.7.9-py3-none-any.whl 测试 import pymysql conn = pymysql.connect(host='127.0.0.1', port=3306,user='root',passwd='1',db='mysql',charset='UTF8') cur = conn.cursor() cur.execute("select version()") for i in cur: print(i) cur.close() conn.close()
    查看全部
  • python 3.4 下直接输入 pip install PyMySQL 就行 时间: 2015-08-20 0 暮雲春樹 暮雲春樹 Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import pymysql >>> pymysql.install_as_MySQLdb() >>> import MySQLdb >>>
    查看全部
  • i/u/d操作数据库流程
    查看全部
  • https://www.python.org/dev/peps/pep-0249

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

    2019-01-08

  • 两账户转账
    查看全部
  • 课程总结
    查看全部
    1 采集 收起 来源:课程总结

    2017-10-18

  • MySQLdb.Connect(参数) host port user passwd db charset cursor() 使用该连接创建返回游标 import MySQLdb conn=MySQLdb.Connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='imooc',charset='utf-8') cursor=conn.cursor() print conn print cursor cursor.close() conn.close()
    查看全部
  • __name__是指示当前py文件调用方式的方法。如果它等于"__main__"就表示是直接执行,如果不是,则用来被别的文件调用,这个时候if就为False,那么它就不会执行最外层的代码了。 比如你有个Python文件里面 def XXXX(): #body print "asdf" 这样的话,就算是别的地方导入这个文件,要调用这个XXXX函数,也会执行print "asdf",因为他是最外层代码,或者叫做全局代码。但是往往我们希望只有我在搜索执行这个文件的时候才运行一些代码,不是的话(也就是被调用的话)那就不执行这些代码,所以一般改为 def XXXX(): #body if __name__="__main__": print "asdf"
    查看全部
  • 事务、如何使用事务
    查看全部
  • 事务的特性,怎样使用事务
    查看全部
  • 更新数据库
    查看全部
首页上一页1234567下一页尾页

举报

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

微信扫码,参与3人拼团

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

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