python与mysql数据库_python与MySQL数据库

python与MySQL数据库

我使用的软件:python2.7 + MySQL+ Navicat for MySQL + Atom

注意:你的数据库表格类型的引擎为:InnoDB ;字符集:utf8 ;排序规则:utf8_general_ci

Python开发MySQL的思想:

图片来自慕课网视频截图:

其中我使用的编辑器是Atom,MySQL数据库的客户端是Navicat for MySQL。

python DB API

思想:

由connection建立数据库连接

由cursor执行SQL语句和获取数据

具体操作:

创建connection对象

获取cursor

使用cursor执行SQL语句

使用cursor获取数据,并判断执行状态

提交事务或者回滚事务

关闭cursor ,关闭connection

创建connection对象:

通过下面这一行代码进行与数据库的连接。

import MySQLdb

conn = MySQLdb.Connect(

host = '127.0.0.1',

port = 3306,

user = 'your user_name',

passwd = 'your passwd',

db = 'your db_name',

charset = 'utf8'

)

获取cursor:

cursor 是一个游标,用于指定数据库的表中的某一行

cursor = conn.cursor()

使用cursor执行SQL语句:

cursor执行SQL语句就相当于在数据库中的查询操作:

sql_sentence = 'your sql_sentence'

cursor.execute(sql_sentence)

通过上面这行代码既可以对数据库进行增,删,改,查等操作

使用cursor获取数据,并判断执行状态:

获取数据有三种方式:

rs = cursor.fetchall() //获取当前游标往下的所有数据

rs = cursor.fetchone()//获取当前游标所在行的数据

rs = cursor.fetchmany(x) //获取当前游标往下 x 行的数据

此后即可以通过对rs的操作,输出我们所需要的数据,例如:

for row in rs:

print "userid=%s,username=%s" %row

提交事务或者回滚事务:

事务的概念就是一组需要同时完成的事情,例如往a转钱给b,那么就需要有同时判断两个账户是否存在,a是否有足够的钱,若有,a扣款的同时b要存款等。

这是一系列要同时考虑的事情,如果在中间不满足条件,则需要回滚事务,即返回到之前的初始状态。

conn.commit() //提交事务

conn.rollback() //回滚事务

在此,我们通常将某一事务放在一个try的代码块中,当出现错误的时候,在except块中报错以及回滚事务:

def transfer(self,sourse_acctid,target_acctid,money): // 很普通的一个转钱的函数

try:

self.check_acct_available(sourse_acctid)

self.check_acct_available(target_acctid)

self.has_enough_money(sourse_acctid,money)

self.reduce_money(sourse_acctid,money)

self.add_money(target_acctid,money) //在此列函数调用中,如果出现错误,会将错误信息给Exception,同时回滚事务;如果顺利执行,则进行下一步:提交事务。

self.conn.commit() //提交事务

except Exception as e:

self.conn.rollback() //回滚事务

raise e //报错

关闭cursor,关闭connection:

为了防止浪费资源,在每次游标进行完操作后,都要关闭游标,在对数据库完成操作后要关闭数据库连接。

cursor.close()

conn.close()

注意事项:

利用try代码块进行SQL操作

每次操作记得返回错误信息,以便调试

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值