Python入门教程之MySQL操作

发布时间:2020-09-22编辑:脚本学堂
本文介绍了python中有关mysql数据库操作的方法,Python入门教程之MySQL操作实例介绍,有需要的朋友参考下。

对于mysql操作,python提供了第三方模块MySQL-python,这里介绍下如何应用这个模块进行最基本的MySQL操作。

一、安装
1、安装setuptools-0.6c11
 

复制代码 代码示例:
#wget --no-check-certificate  http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
#tar zxf setuptools-0.6c11.tar.gz && cd setuptools-0.6c11
#python setup.py build
#python setup.py install

2、安装MySQL-python-1.2.3
 

复制代码 代码示例:
#wget http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz/download
#tar zxf MySQL-python-1.2.3.tar.gz && cd MySQL-python-1.2.3
#python setup.py build
#python setup.py install

注意:如果在执行python setup.py build时,出现EnvironmentError: mysql_config not found错误,则先查找mysql_config的位置,可以使用find / -name mysql_config来查找,比如/usr/local/mysql/bin/mysql_config,然后修改MySQL-python-1.2.3目录下的site.cfg文件,去掉mysql_config=XXX这行的注释,并改成:mysql_config=/usr/local/mysql/bin/mysql_config,修改完后再次执行上面最后两步的build和install命令即可。
如果上面方式不能安装,也可以从官网下载安装包,还可以直接yum install MySQL-python来安装。

二、应用
下面用代码介绍基本数据库操作:
 

复制代码 代码示例:
#vi test_mysql.py
#-*- encoding: gb2312 -*-
import os, sys, string
import MySQLdb
# 连接数据库 
try:
    #conn = MySQLdb.connect(host='localhost', user='root', passwd='xxxx', db='py_test_db',charset='utf8')
    #conn = MySQLdb.connect(host='localhost',user='root',passwd='xxxx',db='py_test_db')
    conn = MySQLdb.connect(host='localhost',user='root',passwd='xxxx')
except Exception, e:
    print e
    sys.exit()
# 获取cursor对象来进行操作
cur = conn.cursor()
# 创建数据库
cur.execute('create database if not exists py_test_db')
conn.select_db('py_test_db')
# 创建表
sql = "create table if not exists test(name varchar(128) primary key, age int(4))"
cur.execute(sql)
# 插入一条记录
sql = "insert into test(name, age) values ('%s', %d)" % ("scq", 30)
try:
    cur.execute(sql)
    conn.commit()
except Exception, e:
    print e
# 插入多条记录
# 1
sql = "insert into test(name, age) values (%s, %s)"
val = (("李四", 24), ("王五", 25), ("洪六", 26))
try:
    cur.executemany(sql, val)
    conn.commit()
except Exception, e:
    print e
# 2
values=[]
for i in range(20):
    values.append(('Tom'+str(i)), i)
try:
    cur.executemany('insert into test values(%s, %s)', values)
    conn.commit()
except MySQLdb.Error,e:
    print "Mysql Error %d: %s" % (e.args[0], e.args[1])
# 查询记录
try:
    # 1 返回一条记录
    sql = "select * from test"
    count = cur.execute(sql)
    print 'there has %s rows record' % count
    result = cur.fetchone()
    print result
    print 'Name: %s Age: %s' % result
    # 2 返回多条记录
    results=cur.fetchmany(5)
    for r in results:
print r
    # 3 返回所有记录
    results=cur.fetchall()
    for r in results:
print r[1]
except MySQLdb.Error,e:
    print "Mysql Error %d: %s" % (e.args[0], e.args[1])
# 释放资源
cur.close()
conn.close()

三、接口
下面是常用的接口函数:
1、事务接口
下面接口由connect对象调用执行:
(1)commit()
提交
(2)rollback()
回滚

2、执行接口
下面接口由cursor调用执行:
(1)callproc(self, procname, args)
用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数。
(2)execute(self, query, args)
执行单条sql语句,接收的参数为SQL语句本身和使用的参数列表,返回值为受影响的行数。
(3)executemany(self, query, args)
执行单挑SQL语句,但是重复执行参数列表里的参数,返回值为受影响的行数。
(4)nextset(self)
移动到下一个结果集。

3、接收接口
下面接口由cursor调用执行:
(1)fetchall(self)
接收全部的返回结果行。
(2)fetchmany(self, size=None)
接收size条返回结果行,如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据。
(3)fetchone(self)
返回一条结果行。
(4)scroll(self, value, mode='relative')
移动指针到某一行,如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条。