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 fabric实现远程部署
Jan 05 Python
基于Python实现的微信好友数据分析
Feb 26 Python
Python 读取指定文件夹下的所有图像方法
Apr 27 Python
Python判断一个文件夹内哪些文件是图片的实例
Dec 07 Python
浅谈python3.6的tkinter运行问题
Feb 22 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
python网络爬虫 Scrapy中selenium用法详解
Sep 28 Python
python计算无向图节点度的实例代码
Nov 22 Python
tensorflow 获取所有variable或tensor的name示例
Jan 04 Python
python破解同事的压缩包密码
Oct 14 Python
python 利用panda 实现列联表(交叉表)
Feb 06 Python
用基于python的appium爬取b站直播消费记录
Apr 17 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语法速查表
2006/12/06 PHP
php 三维饼图的实现代码
2008/09/28 PHP
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
2013/05/15 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
兼容主流浏览器的iframe自适应高度js脚本
2014/01/10 Javascript
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
微信小程序实现折叠与展开文章功能
2018/06/12 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
Python3基础之函数用法
2014/08/13 Python
列举Python中吸引人的一些特性
2015/04/09 Python
python 字符串和整数的转换方法
2018/06/25 Python
matplotlib.pyplot绘图显示控制方法
2019/01/15 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
电大本科自我鉴定
2014/02/05 职场文书
六年级学生评语
2014/04/22 职场文书
广播体操比赛口号
2014/06/10 职场文书
元旦标语大全
2014/10/09 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
销售2014年度工作总结
2014/12/08 职场文书
运动会加油稿50字
2015/07/21 职场文书
安全主题班会教案
2015/08/12 职场文书
2016学校先进党组织事迹材料
2016/02/29 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL