使用 python 连接 MySQL 前,需要安装一个第三方模块,当然,最简单的方法是使用yum 安装:
# yum install MySQL-python -y
也可以使用源码安装,首先要安装 setuptools,然后安装 MySQL-python ,源码包可以在我的ftp上面下载。
下面看 python 操作 MySQL 的一个例子:
#!/usr/bin/env python #coding=utf-8 import MySQLdb try: #连接 conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='123456',port=3306); cur=conn.cursor() cur.execute('create database if not exists py') conn.select_db('py'); #插入一条数据 mess = ('python','feiyu') cur.execute(''' create table test5( id int unsigned auto_increment not null primary key,info varchar(20),name varchar(20)); ''') cur.execute("insert into test5 values(null,%s,%s)" , mess ) #插入数据时,对于自增的要使用null #插入多条数据 values_list = [] for i in range(20): values_list.append(('c++','feiyu_%s' %i)) cur.executemany("insert into test5 values(null,%s,%s)",values_list) #查询 cur.execute('select * from test5') #输出查询结果 result = cur.fetchall() for record in result: print record #提交事物 conn.commit() #关闭连接 cur.close() conn.close() except MySQLdb.Error as e : print "Error in mysql : ",e
1,连接数据库
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='123456',port=3306); cur=conn.cursor() cur.execute('create database if not exists py') conn.select_db('py');
connect 常用的参数包括 :
host:数据库主机名.默认是用本地主机.
user:数据库登陆名.默认是当前用户.
passwd:数据库登陆的秘密.默认为空.
db:要使用的数据库名.没有默认值.
port:MySQL服务使用的TCP端口.默认是3306.
charset:数据库编码.
连接数据库可以将db直接写在connect方法中:
MySQLdb.connect(host='127.0.0.1',user='root',passwd='123456',port=3306,db='py',charset='utf8')
2,执行sql语句和接收返回值
values_list = [] for i in range(20): values_list.append(('c++','feiyu_%s' %i)) cur.executemany("insert into test5 values(null,%s,%s)",values_list) conn.commit() cur.execute('select * from test5') result = cur.fetchall() for record in result: print record
我们先将一个连接对象赋给 cur 对象,然后使用 cur 提供的方法操作数据库:执行命令和接收返回值。
cur用来执行命令的方法:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集
cursor用来接收返回值的方法:
fetchall(self):接收全部的返回结果行.
fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone(self):返回一条结果行.
scroll(self, value, mode=’relative’):移动指针到某一行.如果mode=’relative’,则表示从当前所在行移动value条,如果 mode=’absolute’,则表示从结果集的第一行移动value条.
比较常用的方法有:execute(),executemany(),fetchall()
3,提交或回滚事物
在执行sql语句后,需要执行确认操作,这个连接对象提供了对事务操作的方法 :
conn.commit() #提交 conn.rollback() #回滚
4.关闭数据库连接
需要分别关闭指针对象和连接对象,他们都使用 close() 方法:
cursor.close() conn.close()