Python数据库的连接实现方法与注意事项


Posted in Python onFebruary 27, 2016

在Python中要连接数据库,首先我们得先安装几个重要的东西,主要有:

 (1)Python-dev包
 (2)setuptools-0.6c11.tar.gz
 (3)MySQL-python-1.2.3.tar.gz

下面分别来说说这三个主要的包的安装步骤:

(1)Python-dev包    
    直接yum install python-devel

(2)setuptools-0.6c11.tar.gz
    在网上下载后,先解压:tar zxf setuptools-0.6c11.tar.gz,完毕后cd到解压后的文件夹,执行:
     python setup.py build
      python setup.py install

(3)MySQL-python-1.2.3.tar.gz
    跟安装setuptools-0.6c11.tar.gz步骤一样,先解压:tar zxfMySQL-python-1.2.3.tar.gz,
    完毕后cd到解压后的文件夹,执行:

      python setup.py build
      python setup.py install

    在执行上述命令之前,最好先修改一个文件,我们先查找mysql_config的位置,使用命令:
      find / -name mysql_config
    然后我们获取到它的路径,我的是:/usr/bin/mysql_config,然后修改MySQL-python-1.2.3目录下
    的site.cfg文件,去掉mysql_config=XXX这行前面的#,改为:
                       mysql_config = /usr/bin/mysql_config

经过上面的步骤,我们基本就可以MySQLdb安装好了。

可以测试一下,在Python的交互式命令行,输入import MySQLdb,如果没有报错,就说明已经安装好。

下面的Python代码展示了如何连接数据库,并执行数据库的一些操作:

import MySQLdb

try:
  conn = MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306)
  cur = conn.cursor()

  cur.execute('create database if not exists PythonDB')
  conn.select_db('PythonDB')
  cur.execute('create table Test(id int,name varchar(20),info varchar(20))')

  value = [1,'ACdreamer','student']
  cur.execute('insert into Test values(%s,%s,%s)',value)

  values = []
  for i in range(20):
    values.append((i,'Hello World!','My number is '+str(i)))

  cur.executemany('insert into Test values(%s,%s,%s)',values)
  cur.execute('update Test set name="ACdreamer" where id=3')

  conn.commit()
  cur.close()
  conn.close()
except MySQLdb.Error,msg:
  print "MySQL Error %d: %s" %(msg.args[0],msg.args[1])

可以看出,连接数据库大致分为以下步骤:

  (1)建立和数据库系统的连接
  (2)获取操作游标
  (3)执行SQL,创建一个数据库(当然这一步不是必需的,因为我们可以用已经存在的数据库)
  (4)选择数据库
  (5)进行各种数据库操作
  (6)操作完毕后,提交事务(这一步很重要,因为只有提交事务后,数据才能真正写进数据库)
  (7)关闭操作游标
  (8)关闭数据库连接

当然,如果我们使用已经存在的数据库,那么在获取连接时就可以制定了,比如:
conn = MySQLdb.connect(host='localhost', user='root', passwd='root', db='PythonDB')

如果数据库中有中文,为了防止乱码,我们加入属性charset = 'uft-8'或者'gb2312',charset要跟数据库的编码一致。
conn = MySQLdb.connect(host='localhost', user='root',
       passwd='root', db='PythonDB',charset='utf8')

下面贴一下常用的函数:

数据库连接对事务操作的方法:commit() 提交    rollback() 回滚

cursor用来执行命令的方法:

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条。

Python 相关文章推荐
Python GAE、Django导出Excel的方法
Nov 24 Python
python为tornado添加recaptcha验证码功能
Feb 26 Python
解决Python一行输出不显示的问题
Dec 03 Python
python flask框架实现重定向功能示例
Jul 02 Python
python实现ip地址查询经纬度定位详解
Aug 30 Python
python被修饰的函数消失问题解决(基于wraps函数)
Nov 04 Python
python 比较2张图片的相似度的方法示例
Dec 18 Python
Python实现子类调用父类的初始化实例
Mar 12 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
Apr 15 Python
基于Python的一个自动录入表格的小程序
Aug 05 Python
Python识别处理照片中的条形码
Nov 16 Python
python之pygame模块实现飞机大战完整代码
Nov 29 Python
学习python之编写简单简单连接数据库并执行查询操作
Feb 27 #Python
学习python之编写简单乘法口诀表实现代码
Feb 27 #Python
学习python 之编写简单乘法运算题
Feb 27 #Python
python学习之编写查询ip程序
Feb 27 #Python
用python写的一个wordpress的采集程序
Feb 27 #Python
python结合shell查询google关键词排名的实现代码
Feb 27 #Python
python的else子句使用指南
Feb 27 #Python
You might like
php FPDF类库应用实现代码
2009/03/20 PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
解析php常用image图像函数集
2013/06/24 PHP
PHP访问Google Search API的方法
2015/03/05 PHP
基于CI框架的微信网页授权库示例
2016/11/25 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
2007/11/30 Javascript
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
Javascript常用字符串判断函数代码分享
2014/12/08 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
详解JS模块导入导出
2017/12/20 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
JavaScript使用localStorage存储数据
2019/09/25 Javascript
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
基于Python中的yield表达式介绍
2019/11/19 Python
英国门把手公司:Door Handle Company
2019/05/12 全球购物
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
新加坡第一的杂货零售商:NTUC FairPrice
2020/12/05 全球购物
大学生军训广播稿
2014/01/24 职场文书
保密工作目标责任书
2014/07/28 职场文书
2014年领班工作总结
2014/11/25 职场文书
被告代理词范文
2015/05/25 职场文书