您现在的位置: 365建站网 > 365学习 > Python操作MySQL(创建/连接/查询/插入/修改/删除)的方法

Python操作MySQL(创建/连接/查询/插入/修改/删除)的方法

文章来源:365jz.com     点击数:340    更新时间:2018-01-27 11:44   参与评论

Python操作MySQL

1.导入MySQLdb数据库模块

在导入MySQLdb之前,需要安装MySQLdb模块。使用pip安装,命令如下:

pip install MySQL-python

安装成功后,导入MySQLdb模块:

import MySQLdb

2.打开数据库

sqlite3模块使用connect方法打开数据库,方法参数可以为主机ip(host)、用户名(user)、密码(passwd)、数据库名称(db)、端口(port)和编码(charset)。

con = MySQLdb.connect(host='localhost',user='root',passwd='',db='test', port=3306, charset='utf8')

3.数据库连接对象

上面通过connect方法返回的con对象,即是数据库连接对象,它提供了以下方法:

·cursor()方法用来创建一个游标对象。

·commit()方法用来事务提交。

·rollback()方法用来事务回滚。

·close()方法用来关闭一个数据库连接。

4.游标对象的使用

对数据库的查询需要使用到游标对象,首先通过cursor()方法创建一个游标对象:

cur = con.cursor()

游标对象有以下方法支持数据库的操作:

·execute()用来执行SQL语句。

·executemany()用来执行多条SQL语句。

·close()用来关闭游标。

·fetchone()用来从结果中取一条记录,并将游标指向下一条记录。

·fetchmany()用来从结果中取多条记录。

·fetchall()用来从结果中取出所有记录。

·scroll()用于游标滚动。

5.建表

首先使用游标对象创建一个person表,包含id、name、age等3

列,代码如下:

cur.execute(' CREATE TABLE person (id int not null auto_increment primary key,name varchar(20),age int)')

6.插入数据

向person表中插入两条数据。插入数据一般有两种做法,第一种做法是直接构造一个插入的SQL语句,代码如下:

data="'qiye',20"
cur.execute(' INSERT INTO person (name,age) VALUES (%s)'%data)

但是这种做法非常不安全,容易导致SQL注入。另一种做法使用占位符“%s”的方式来规避这个问题,代码如下:

cur.execute(' INSERT INTO person (name,age) VALUES (%s,%s)',('qiye',20))

还可以使用executemany()执行多条SQL语句,使用executemany()方法比循环使用execute()方法执行多条SQL语句效率高很多。

cur.executemany(' INSERT INTO person (name,age) VALUES (%s,%s)',[('marry',20),('jack',20)])

这两种方法插入数据都不会立即生效,需要使用数据库对象con

进行提交操作:

con.commit()

如果出现错误,还可以使用回滚操作:

con.rollback()

7.查询数据

查询person表中的所有数据,代码如下:

cur.execute('SELECT * FROM person')

要提取查询数据,游标对象提供了fetchall()和fetchone()方法。fetchall()方法获取所有数据,返回一个二维的列表。

fetchone()方法获取其中的一个结果,返回一个元组。使用方法如

下:

cur.execute('SELECT * FROM person')
res = cur.fetchall()
for line in res:
print line
cur.execute('SELECT * FROM person')
res = cur.fetchone()
print res

8.修改和删除数据

cur.execute('UPDATE person SET name=%s WHERE id=%s',('rose',1))
cur.execute('DELETE FROM person WHERE id=%s',(0,))
con.commit()
con.close()

 

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (340人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------