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()
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛