时间:2021-07-01 10:21:17 帮助过:7人阅读
运行程序结果如下:
从结果中我们可以看见成功创建了一个Connection和Cursor对象。
二、建立数据库,进行一些简单操作
1.简单的创建一个’user‘表,并且插入一些数据。user表中只有两个字段:userid和username。代码如下:
import MySQLdb conn=MySQLdb.connect(host=‘127.0.0.1‘,port=3306,user=‘root‘,passwd=‘199331‘,db=‘test‘,charset=‘utf8‘) cur=conn.cursor() cur.execute(""" create table if not EXISTS user ( userid int(11) PRIMARY KEY , username VARCHAR(20) ) """) for i in range(1,10): cur.execute("insert into user(userid,username) values(‘%d‘,‘%s‘)" %(int(i),‘name‘+str(i))) conn.commit() cur.close() conn.close()
我们用Navicat打开数据库,查看一下结果,,可以看到成功创建表,并且插入了十个数据。
2.我们操作一下Cursor里面的一些方法。
execute()方法:执行SQL,将一个结果从数据库获取到客户端
fetch*()方法:移动rownumber,返回数据。
例如我们有如下代码:
sql=‘select * from user‘ cursor.execute(sql) print(cursor.rowcount) rs=cursor.fetchone() print(rs) rs=cursor.fetchmany(3) print(rs)
rs=cursor.fetchall()
print(rs)
结果如下:
我们可以看出执行查询全部数据后,rowcount为10
执行fetchone()方法后返回一个数据,执行fetchmany(3)后返回3条数据,执行fetchall()后返回剩下的所有数据。
再有如下代码:
res=cursor.fetchall() for row in res: print(‘userid=%s,userna=%s‘ %row)
此时的执行结果为:
3.上面介绍的便是数据库中常说的Select操作,下面我们介绍数据的更新,即:insert、update、delete操作。值得注意的是在这部分操作时需要注意的是是否数据发生异常,如果数据没有发生异常,我们便可以直接使用commit()进行提交(注:如没有使用commit,则数据库不会发生任何变化)。但是如果出现了异常,那么久需要使用rollback()进行回滚。
3.1先来看一个没有异常,正常提交的例子:
sql_insert=‘insert into user(userid,username) values(10,"name10")‘ sql_update=‘update user set username="name91" where userid=9‘ sql_delete=‘delete from user where userid=3‘ cursor.execute(sql_insert) print(cursor.rowcount) cursor.execute(sql_update) print(cursor.rowcount) cursor.execute(sql_delete) print(cursor.rowcount)
conn.commit()
上面的操作即是:添加一条(10,’name10‘)的数据、将userid=9的username修改为’name91‘,删除userid=3的数据,执行上面代码后我们来用Navicat查看一下数据:
从结果可以看到代码执行正常。
3.2.再来看一个有异常的数据
sql_insert=‘insert into user(userid,username) values(10,"name10")‘ sql_update=‘update user set username="name91" where userid=9‘ # sql_delete=‘delete from user where userid=3‘ # ##error sql_delete=‘delete from user where useri=3‘ try: cursor.execute(sql_insert) print(cursor.rowcount) cursor.execute(sql_update) print(cursor.rowcount) cursor.execute(sql_delete) print(cursor.rowcount) except Exception as e: print(e) conn.rollback()
这里的insert和update操作一样,只不过把delete里面的userid字段错误的写成了useri,执行代码:
可以看到显示出异常,这时我们来看一下数据库数据:
数据没有任何改变。这就是rollback()的作用
因此,我们以后再写增删改查操作时,最好把操作放入一个try控制块中,来避免一些不必要的错误。
Python使用MySQL数据库的方法以及一个实例
标签: