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 参数列表中的self 显式不等于冗余
Dec 01 Python
python操作xml文件详细介绍
Jun 09 Python
Python算法应用实战之栈详解
Feb 04 Python
Python反射用法实例简析
Dec 22 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
Python求正态分布曲线下面积实例
Nov 20 Python
PyTorch里面的torch.nn.Parameter()详解
Jan 03 Python
python使用pyecharts库画地图数据可视化的实现
Mar 25 Python
Django调用支付宝接口代码实例详解
Apr 04 Python
Pycharm配置lua编译环境过程图解
Nov 28 Python
matplotlib之属性组合包(cycler)的使用
Feb 24 Python
Python软件包安装的三种常见方法
Jul 07 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
海贼王:最美的悬赏令!
2020/03/02 日漫
四个PHP非常实用的功能
2015/09/29 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
2019/04/17 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
JavaScript通过字符串调用函数的实现方法
2015/03/18 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
js漂浮广告实现代码
2015/08/15 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
python实现将内容分行输出
2015/11/05 Python
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
Python坐标线性插值应用实现
2019/11/13 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
日本小田急百货官网:Odakyu
2018/07/19 全球购物
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
团员个人总结
2015/02/26 职场文书
个人廉政承诺书
2015/04/28 职场文书
Ajax常用封装库——Axios的使用
2021/05/08 Javascript
Java Spring 控制反转(IOC)容器详解
2021/10/05 Java/Android
Python日志模块logging用法
2022/06/05 Python
win sever 2022如何占用操作主机角色
2022/06/25 Servers
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL