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 相关文章推荐
pyv8学习python和javascript变量进行交互
Dec 04 Python
python删除文件示例分享
Jan 28 Python
Python键盘输入转换为列表的实例
Jun 23 Python
详解python里的命名规范
Jul 16 Python
在PyCharm导航区中打开多个Project的关闭方法
Jan 17 Python
在python中实现强制关闭线程的示例
Jan 22 Python
Django中reverse反转并且传递参数的方法
Aug 06 Python
python web框架中实现原生分页
Sep 08 Python
Python实现发票自动校核微信机器人的方法
May 22 Python
Python类super()及私有属性原理解析
Jun 15 Python
python字典key不能是可以是啥类型
Aug 04 Python
python_tkinter弹出对话框创建
Mar 20 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 MsSql server时遇到的中文编码问题
2009/06/11 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
php中hashtable实现示例分享
2014/02/13 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
Javascript函数式编程语言
2015/10/11 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
详解vue服务端渲染(SSR)初探
2017/06/19 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
Element Notification通知的实现示例
2020/07/27 Javascript
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
python使用itchat实现手机控制电脑
2018/02/22 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
Python中的流程控制详解
2021/02/18 Python
使用 css3 实现圆形进度条的示例
2017/07/05 HTML / CSS
荷兰本土平价百货:HEMA
2017/10/23 全球购物
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
青年志愿者活动方案
2014/08/17 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫
bose降噪耳机音能消除人声吗
2022/04/19 数码科技