当前位置:Gxlcms > 数据库问题 > Python使用MySQL数据库的方法以及一个实例

Python使用MySQL数据库的方法以及一个实例

时间:2021-07-01 10:21:17 帮助过:7人阅读

MySQLdb conn=MySQLdb.connect(host=127.0.0.1,port=3306,user=root,passwd=199331,db=test,charset=utf8) cursor=conn.cursor() print(conn) print(cursor) cursor.close() conn.close()

运行程序结果如下:技术分享

从结果中我们可以看见成功创建了一个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数据库的方法以及一个实例

标签:

人气教程排行