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 相关文章推荐
Python3基础之基本数据类型概述
Aug 13 Python
Python xlrd读取excel日期类型的2种方法
Apr 28 Python
pygame播放音乐的方法
May 19 Python
Python 基础知识之字符串处理
Jan 06 Python
pandas多级分组实现排序的方法
Apr 20 Python
解决pycharm 误删掉项目文件的处理方法
Oct 22 Python
NumPy 基本切片和索引的具体使用方法
Apr 24 Python
Python3.5装饰器原理及应用实例详解
Apr 30 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
Python基于yield遍历多个可迭代对象
Mar 12 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 GD 图像处理组件的常用函数总结
2010/04/28 PHP
PHP下载远程文件到本地存储的方法
2015/03/24 PHP
php mysql 封装类实例代码
2016/09/18 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
jcrop基本参数一览
2013/07/16 Javascript
JavaScript中的toLocaleDateString()方法使用简介
2015/06/12 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
2017/10/24 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
谈谈React中的Render Props模式
2018/12/06 Javascript
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
python类定义的讲解
2013/11/01 Python
Django 生成登陆验证码代码分享
2017/12/12 Python
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
Django框架模板的使用方法示例
2019/05/25 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
茵宝(Umbro)英国官方商店:英国足球服装生产商
2016/12/29 全球购物
运动会广播稿50字
2014/01/26 职场文书
个性发展自我评价
2014/02/11 职场文书
运动会通讯稿200字
2014/02/16 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
学校工作推荐信范文
2014/07/11 职场文书
计划生育诚信协议书
2014/11/02 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server