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进阶教程之循环相关函数range、enumerate、zip
Aug 30 Python
Python3.2模拟实现webqq登录
Feb 15 Python
用pandas按列合并两个文件的实例
Apr 12 Python
Pandas中把dataframe转成array的方法
Apr 13 Python
Python3中关于cookie的创建与保存
Oct 21 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
详解Python Matplot中文显示完美解决方案
Mar 07 Python
python 同时读取多个文件的例子
Jul 16 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
Aug 23 Python
python 实现分组求和与分组累加求和代码
May 18 Python
Python 如何展开嵌套的序列
Aug 01 Python
Python confluent kafka客户端配置kerberos认证流程详解
Oct 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
实用函数9
2007/11/08 PHP
Java和PHP在Web开发方面对比分析
2015/03/01 PHP
Thinkphp 框架扩展之驱动扩展实例分析
2020/04/27 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
轻轻松松学习JavaScript
2007/02/25 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
详解js中class的多种函数封装方法
2016/01/03 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
jQuery实现frame之间互通的方法
2017/06/26 jQuery
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
Vue shopCart 组件开发详解
2018/01/26 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
2017/08/07 Python
python微信公众号之关键词自动回复
2018/06/15 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
使用CSS3的ruby-position固定注音位置的用法示例
2016/07/05 HTML / CSS
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
会计专业推荐信
2013/10/29 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
综合测评个人总结
2015/03/03 职场文书
2015年计划生育责任书
2015/05/08 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书
带你学习MySQL执行计划
2021/05/31 MySQL
Python之matplotlib绘制饼图
2022/04/13 Python