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中enumerate的用法实例解析
Aug 18 Python
Python实现的选择排序算法原理与用法实例分析
Nov 22 Python
对tf.reduce_sum tensorflow维度上的操作详解
Jul 26 Python
使用python制作一个为hex文件增加版本号的脚本实例
Jun 12 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
python判断自身是否正在运行的方法
Aug 08 Python
django连接oracle时setting 配置方法
Aug 29 Python
Python使用matplotlib实现交换式图形显示功能示例
Sep 06 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
Apr 26 Python
Java ExcutorService优雅关闭方式解析
May 30 Python
python中doctest库实例用法
Dec 31 Python
如何在C++中调用Python
May 21 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
全文搜索和替换
2006/10/09 PHP
PHP set_error_handler()函数使用详解(示例)
2013/11/12 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
Laravel自动生成UUID,从建表到使用详解
2019/10/24 PHP
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
JavaScript实现多个重叠层点击切换效果的方法
2015/04/24 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
jQuery实现手机自定义弹出输入框
2016/06/13 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
关于Python中定制类的比较运算实例
2019/12/19 Python
django在开发中取消外键约束的实现
2020/05/20 Python
Python如何在windows环境安装pip及rarfile
2020/06/15 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
高中地理教学反思
2014/01/29 职场文书
班级出游活动计划书
2014/08/15 职场文书
倡议书格式
2014/08/30 职场文书
小班教师个人总结
2015/02/05 职场文书
党员个人总结自评
2015/02/14 职场文书
质检员岗位职责范本
2015/04/07 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
女方离婚起诉书
2015/05/18 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
描述鲁迅的名言整理,一生受用
2019/08/08 职场文书
对讲机的最大通讯距离是多少
2022/02/18 无线电