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 linecache.getline()读取文件中特定一行的脚本
Sep 06 Python
python通过urllib2爬网页上种子下载示例
Feb 24 Python
pycharm 使用心得(九)解决No Python interpreter selected的问题
Jun 06 Python
浅析Python的Django框架中的Memcached
Jul 23 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
Jan 20 Python
python版简单工厂模式
Oct 16 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
python按键按住不放持续响应的实例代码
Jul 17 Python
PyTorch的Optimizer训练工具的实现
Aug 18 Python
tensorflow模型继续训练 fineturn实例
Jan 21 Python
Python字符串格式化常用手段及注意事项
Jun 17 Python
python3判断IP地址的方法
Mar 04 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
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
extjs grid设置某列背景颜色和字体颜色的方法
2010/09/03 Javascript
JQuery+JS实现仿百度搜索结果中关键字变色效果
2011/08/02 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
js控制iframe的高度/宽度让其自适应内容
2014/04/09 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
nodejs实现遍历文件夹并统计文件大小
2015/05/28 NodeJs
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
JSON Web Tokens的实现原理
2017/04/02 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
python保存数据到本地文件的方法
2018/06/23 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
联想中国官方商城:Lenovo China
2017/10/18 全球购物
清扬洗发水广告词
2014/03/14 职场文书
机关办公室岗位职责
2014/04/16 职场文书
一分钟演讲稿
2014/04/30 职场文书
诚信贷款承诺书
2014/05/30 职场文书
农村党员一句话承诺
2014/05/30 职场文书
vue3获取当前路由地址
2022/02/18 Vue.js