python操作MySql数据库

准备

在python中操作数据库我们都采用pymysql库来操作。用pip命令进行安装。

pip install pymysql

安装成功后导入pymysql库。然后就可以进行数据库的相关操作了。

import pymysql

一、建立连接

连接的建立通过pymysql的connect函数。连接用完后记得关闭是个好习惯。

import pymysql
db_config={
    'user':'root',          #用户名
    'password':'qwe123',    #密码
    'db':'course',          #选择的数据库
    'charset':'utf8'        #编码
}
conn=pymysql.connect(**db_config)
conn.close()  #连接关闭

二、生成游标

连接建立好后,并不能操纵数据库,我们需要使用游标来操作数据库。

游标的建立用到cursor()函数。与连接一样游标用完也要进行关闭。

cur=conn.cursor()
cur.close()

三、执行sql语句

我们操作数据库都是通过sql语句来实现的,所以在python中要想操作数据库,就需要使用execute()函数来执行sql语句。

cur.execute('执行的sql语句')      #注意在一条sql语句的结束在这里是不需要添加‘;’的

语句执行后只会返回受影响的行数。

import pymysql
db_config={
    'user':'root',          #用户名
    'password':'qwe123',   #密码
    'db':'course',          #选择的数据库
    'charset':'utf8'        #编码
}
conn=pymysql.connect(**db_config)
cur=conn.cursor()
cla=cur.execute('show tables')
print(cla)


>>>4

四、获取结果

执行sql语句后我们需要查看返回的结果值,这时用到fetchall()函数。

import pymysql
db_config={
    'user':'root',          #用户名
    'password':'qwe123',   #密码
    'db':'course',          #选择的数据库
    'charset':'utf8'        #编码
}
conn=pymysql.connect(**db_config)
cur=conn.cursor()
cur.execute('show tables')
print(cur.fetchall())

>>>(('choice',), ('course',), ('partment',), ('student',))

五、事务的提交与回滚

在python操作数据库的时候如果你之编写了sql语句而没有将语句提交,那么你所做的一切都是徒劳的。因为不提交的事务(一次数据操作)是不会对数据库产生影响的。所以使用commit()函数进行提交。

cur=conn.cursor()
cur.execute('INSERT INTO student VALUES (111,"刚刚",4)')
conn.commit()

如果数据执行时出现异常,就需要进行回滚,比如说,你要去银行给别人汇款,当你把钱刚从你的账户提取出来还没有汇入对方账户后突然就停电了,这时你的钱变少了而对方却没收到钱,这时就是一个异常,我们要撤销掉刚才的操作这时就需要回滚,用rollback()函数。可以设计用try ,except 捕捉异常如果出现异常就回滚,未异常就提交。但是提交后就不能回滚了。

cur=conn.cursor()
cur.execute('INSERT INTO student VALUES (111,"刚刚",4)')
conn.rollback()

六、综合举例

import pymysql
db_config={
    'user':'root',          #用户名
    'password':'qwe123',   #密码
    'db':'course',          #选择的数据库
    'charset':'utf8'        #编码
}
conn=pymysql.connect(**db_config)
cur=conn.cursor()
try:
    executes=cur.execute('INSERT INTO student VALUES (111,"刚刚",4)')
    values=cur.fetchall()
    for value in values:
        print(value)
    conn.commit()
except Exception as e:
    print(e)
    conn.rollback()
finally:
    cur.close()
    conn.close()

 

posted @ 2018-09-04 19:49  AustinJoe  阅读(118)  评论(0编辑  收藏  举报