python操作数据库的几种方法_python对mysql数据库操作的三种不同方式

原标题:python对mysql数据库操作的三种不同方式

|转载自:博客园

|原文链接:http://www.cnblogs.com/mryrs/p/6951008.html

先要说一下,在这个暑期如果没有什么特殊情况,我打算用python尝试写一个考试系统,希望能在下学期的python课程实际使用,并且尽量在此之前把用到的相关技术都以分篇博客的方式分享出来,有想要交流的小伙伴可以持续关注我!

话不多说,本博客是考试系统中要用到的一个技术 python对mysql的操作的三种实现方式。

再此之前先引入三个知识点:

1 :__name__=='__main__'

这是什么意思呢?

python文件的后缀为.py

py文件既可以用来直接执行,也可以用来作为模块被导入

在python中用import导入模块

__name__作为模块的内置属性,简单点说,就是.py文件的调用方式,如果是以模块调用__name__就等于该模块的名字(后文会继续说明),如果是直接调用__name__就等于'__main__'

2:命令行传参

何为命令行传参? 顾名思义 ,是在命令行传递参数,和常见的传递参数方式不同的是,命令行传递参数是把参数和程序写在同一个命令行来运行。

给个实际的图片看一下(我用的是linux环境,如果在windows下可用dos实现):

这里python3 是执行python程序的格式,pyt3.py 和pyt2.py是 .py程序的名字,而后面的 100 101 3都是参数。

明确了这个之后,引入一个库,sys库,这个库可以支持对命令行传递过来的参数的一些操作(后文会继续说明)。

3:pymysql这个库

注意,在python3以上版本已经不支持mysqldb这个库了,不过两者的方法基本相同。

这个库的用法主要步骤如下:

建立connection

获取cursor(可以把它当做一个游标)

执行sql语句

事务出现异常?

n:con.commit

y:con.rollbac

获取执行sql后的数据

cursor.fetch

这里提到了事务,事务又是什么呢。简单的说,一个事务包含的所有操作都是原子操作 即 要么都执行 要么都不执行,事务有什么用呢(后文会继续说明)

好了,回归正题,那么python操作mysql数据库有哪三种方式呢? 以银行转账为例,先看第一种

1:普通方式

这里纯粹是面向过程的编程思想,注意代码最后的try ,except 这里就是一个完整的事务流程,当执行remove 和add出现了异常 就进行rollback()rollback的作用就是回滚到sql语句执行前的状态。

为什么要这样呢? 试想这种情况:A给B的银行卡转账100块钱,即A-100 B+100.而B在此之前把此银行卡注销掉了, 如果不进行事务操作 就会出现:A白白丢失100块钱的情况

而我们期望的情况是这样:A-100 B+100 ,如果转账过程中出现了异常,A、B的金额都保持不变。使用事务这种原子性操作就可以确保操作的安全。

2:下面看第二种方法 面向对象方式:

把所有方法都封装到一个类里,transfor方法里同样是事务操作,前面也说道过 __name__这个内置属性,这个程序如果直接运行的话 __name__就等于__main,那么此时if __name__=='__main__' 就成立,即这句话相当于该程序的入口。

3:下面看第三种方式 模块化

是不是很短,没错,把上述第二种方式的程序保存为temp2.py ,在该程序里直接import temp2 即可调用temp2.py的类的方法,注意此时temp2.py里的__name__ 就不等于__main__了 而是等于 temp.

对了,以上的连接 host 和 passwd 我都用xxx 来表示了,因为是我个人的服务器不便于公开,实际中大家改成自己的就可以了。返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值