python mysqldb安装_Python数据库编程

Python操作数据库,完成简单的增删改查工作,以MySQL数据库为例。

Python的MySQL数据库操作模块叫MySQLdb,需要额外的安装下。

一、常用方法及其参数

MySQLdb.Connect(parameters...)方法提供了以下一些常用的参数:

参数描述
host数据库地址
user数据库用户名
passwd数据库密码,默认为空
db数据库库名,没有默认库
port数据库端口,默认3306
connect_timeout连接超时时间,秒为单位
use_unicode结果以unicode字符串返回
charset插入数据库编码

连接对象返回的connect()函数:

参数描述
commit()提交事务。对支持事务的数据库和表,如果提交修改操作,不适用这个方法,则不会写到数据库中
rollback()事务回滚。对支持事务的数据库和表,如果执行此方法,则回滚当前事务。在没有commit()前提下。
cursor([cursorclass])创建一个游标对象。所有的sql语句的执行都要在游标对象下进行。MySQL本身不支持游标,MySQLdb模块对其游标进行了仿真。

游标对象也提供了几种方法:

参数描述
close()关闭游标
execute(sql)执行sql语句
excutemany(sql)执行多条sql语句
fetchone()从执行结果中取第一条记录
fetchmany(n)从执行结果中取n条记录
fetchall()从执行结果中取所有记录
scroll(self, value, mode='relative')游标滚动

二、初始环境配置

Python2.6安装升级到python2.7(如果默认是python2.7就不需要执行第一步)

1)下载Python2.7最新版本并编译安装# wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz# tar zxvf Python-2.7.12.tgz # cd Python-2.7.12 # ./configure # make && make install # mv /usr/bin/python /usr/bin/python2.6.6# ln -s /usr/local/bin/python2.7 /usr/bin/python# python -VPython 2.7.12注意:软链接指向Python2.7版本后,yum将不能正常工作,因为yum是2.6写的不兼容2.7,所以需要指定下yum命令里默认Python版本为原来的2.6.6版本。# sed -i '1s/$/2.6.6/' /usr/bin/yum2)安装setuptools setuptools工具用来setup.py安装第三方模块。先安装下环境依赖软件包:# yum install python-devel zlib-devel openssl-devel –y下载并安装:# wget https://pypi.python.org/packages/32/3c/e853a68b703f347f5ed86585c2dd2828a83252e1216c1201fa6f81270578/setuptools-26.1.1.tar.gz# tar zxvf setuptools-26.1.1.tar.gz# cd setuptools-26.1.1# python setup.py install......如果没有安装zlib-devel软件包会报下面错误:"Compression requires the (missing) zlib module" RuntimeError: Compression requires the (missing) zlib module解决方法:安装上述的软件包,再进入刚解压的Python2.7目录重新编译安装# cd ../Python-2.7.12# make && make install# python setup.py install3)安装pip2.7 pip用于后期方面再安装第三方模块。# wget https://pypi.python.org/packages/e7/a8/7556133689add8d1a54c0b14aeff0acb03c64707ce100ecd53934da1aa13/pip-8.1.2.tar.gz# tar zxvf pip-8.1.2.tar.gz# cd pip-8.1.2# python setup.py install4)安装必要组件# yum install -y mysql-devel python-devel# yum install python-dev -y# pip install MySQL-python5)直接执行Python命令就启动默认的CPython解释器# python

Python 2.7.12 (default, Apr  2 2020, 13:16:51) 

[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> print "Hello Word!"

Hello Word!

配置自动补全# pip2.7 install readline# # pip2.7 install rlcompleter2>>> import readline, rlcompleter>>> readline.parse_and_bind("tab: complete")

三、数据库删查增改

3.1创建test数据库并允许root用户远程登陆

在数据库服务器上执行以下命令

创建test数据库

MariaDB [(none)]> create database test;

允许root用户远程登录数据库服务器

MariaDB [(none)]> grant all on *.* to root@'%' identified by 'password' with grant option;

MariaDB [(none)]> flush privileges;

测试远程连接

8b1f74954f0413768e398133837e1109.png

3.2 在test库创建一张user表,并添加一条记录

>>> import MySQLdb

>>> conn = MySQLdb.Connect(host='x.x.x.x',user='root',passwd='HUDson888', db='test',charset='utf8')

>>> cursor = conn.cursor()

>>> sql = "create table user(id int,name varchar(30),password varchar(30))"

>>> cursor.execute(sql) # 返回的数字是影响的行数

0L

>>> sql = "insert into user(id,name,password) values('1','xiaoming','123456')"

>>> cursor.execute(sql)

1L

>>> conn.commit() # 提交事务,写入到数据库

>>> cursor.execute('show tables') # 查看创建的表

>>> cursor.fetchall() #返回上一个游标执行的所有结果,默认是以元组形式返回

((u'user',),)

>>> cursor.execute('select * from user')

1L

>>> cursor.fetchall()

((1L, u'xiaoming', u'123456'),)

1ab061b784321ef53fb2f80dacdeed93.png

3.2 插入多条数据

>>> sql = 'insert into user(id,name,password) values(%s,%s,%s)'

>>> args = [('2','zhangsan','123456'), ('3','lisi','123456'),('4','wangwu','123456')]

>>> cursor.executemany(sql, args)

3L

>>> conn.commit()

>>> sql = 'select * from user'

>>> cursor.execute(sql)

4L

>>> cursor.fetchall()

((1L, u'xiaoming', u'123456'), (2L, u'zhangsan', u'123456'), (3L, u'lisi', u'123456'), (4L, u'wangwu', u'123456'))

3.3 删除

>>> sql = 'delete from user where name="xiaoming"'

>>> cursor.execute(sql)

1L

>>> conn.commit()

>>> sql = 'select * from user'

>>> cursor.execute(sql)

3L

>>> cursor.fetchall()

((2L, u'zhangsan', u'123456'), (3L, u'lisi', u'123456'), (4L, u'wangwu', u'123456'))

9bfd5217f1ff2ab93405c730d05b75ca.png

3.4 查询记录

>>> sql = 'select * from user'

>>> cursor.execute(sql)

3L

>>> cursor.fetchone() #获取第一行数据

(2L, u'zhangsan', u'123456')

>>> sql = 'select * from user'

>>> cursor.execute(sql)

3L

>>> cursor.fetchmany(2) #获取两行数据

((3L, u'lisi', u'123456'), (4L, u'wangwu', u'123456'))

3.5 以字典形式返回结果

默认显示是元组形式,要想返回字典形式,使得更易处理,就用到cursor([cursorclass])中的cusorclass参数。

传入MySQLdb.cursors.DictCursor类:

>>> cursor = conn.cursor(MySQLdb.cursors.DictCursor)

>>> sql = 'select * from user'

>>> cursor.execute(sql)

3L

>>> cursor.fetchall()

({'password': u'123456', 'id': 2L, 'name': u'zhangsan'}, {'password': u'123456', 'id': 3L, 'name': u'lisi'}, {'password': u'123456', 'id': 4L, 'name': u'wangwu'})

四、遍历查询结果

#!/usr/bin/env python# -*- coding: utf-8 -*-import MySQLdbtry:          conn = MySQLdb.Connect(host='x.x.x.x.',user='root',passwd='HUDson888', db='test',charset='utf8')          cursor = conn.cursor()          sql = "select * from user"          cursor.execute(sql)          for i in cursor.fetchall():                   print iexcept Exception, e:           print ("Connection Error: " + str(e))finally:           conn.close()

# python test.py

(2L, u'zhangsan', u'123456')

(3L, u'lisi', u'123456')

(4L, u'wangwu', u'123456')

使用for循环遍历查询结果,并增加了异常处理。

8b660c0ab6f0e392964a9f4c0db1a87a.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值