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写的贪吃蛇游戏例子
Jun 16 Python
Python中使用Flask、MongoDB搭建简易图片服务器
Feb 04 Python
Hadoop中的Python框架的使用指南
Apr 22 Python
Django 前后台的数据传递的方法
Aug 08 Python
python MysqlDb模块安装及其使用详解
Feb 23 Python
python与字符编码问题
May 24 Python
python3 打印输出字典中特定的某个key的方法示例
Jul 06 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
django使用graphql的实例
Sep 02 Python
如何完美的建立一个python项目
Oct 09 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 开发环境配置(Zend Server安装)
2010/04/28 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
php截取html字符串及自动补全html标签的方法
2015/01/15 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
Bootstrap学习笔记之css样式设计(2)
2016/06/07 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
python实现zencart产品数据导入到magento(python导入数据)
2014/04/03 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
使用Python脚本从文件读取数据代码实例
2020/01/19 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
值传递还是引用传递
2015/02/08 面试题
高三自我鉴定
2013/10/23 职场文书
会议活动邀请函
2014/01/27 职场文书
索桥的故事教学反思
2014/02/06 职场文书
对公司合理化的建议书
2014/03/12 职场文书
代理人委托书
2014/08/01 职场文书
要账委托书范本
2014/09/15 职场文书
垂直极限观后感
2015/06/08 职场文书
Django rest framework如何自定义用户表
2021/06/09 Python