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正则表达式re模块详解
Jun 25 Python
10种检测Python程序运行时间、CPU和内存占用的方法
Apr 01 Python
python的unittest测试类代码实例
Dec 07 Python
Python之reload流程实例代码解析
Jan 29 Python
对python中执行DOS命令的3种方法总结
May 12 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
May 15 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
python爬取招聘要求等信息实例
Nov 20 Python
彻底解决pip下载pytorch慢的问题方法
Mar 01 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 array_map()数组函数使用说明
2011/07/12 PHP
phpmyadmin下载、安装、配置教程
2017/05/16 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
ajax 缓存 问题 requestheader
2010/08/01 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
在vue项目中使用Nprogress.js进度条的方法
2018/01/31 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
Python单例模式实例分析
2015/01/14 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
详解python3中tkinter知识点
2018/06/21 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
在C语言中"指针和数组等价"到底是什么意思?
2014/03/24 面试题
《灯光》教学反思
2014/02/08 职场文书
行政部岗位职责范本
2014/03/13 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
使用@Value值注入及配置文件组件扫描
2021/07/09 Java/Android
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis
排查Tomcat进程假死的问题
2022/05/06 Servers