python中使用mysql数据库详细介绍


Posted in Python onMarch 27, 2015

一、安装mysql

如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可。

Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的linux 仓库中都会有mysql ,我们只需要通过一个命令就可以下载安装:

Ubuntu\deepin

>>sudo apt-get install mysql-server
>>Sudo apt-get install  mysql-client

centOS/redhat
>>yum install mysql

二、安装MySQL-python

要想使python可以操作mysql 就需要MySQL-python驱动,它是python 操作mysql必不可少的模块。

下载地址:https://pypi.python.org/pypi/MySQL-python/

下载MySQL-python-1.2.5.zip 文件之后直接解压。进入MySQL-python-1.2.5目录:

>>python setup.py install

三、测试

测试非常简单,检查MySQLdb 模块是否可以正常导入。

fnngj@fnngj-H24X:~/pyse$ python 

Python 2.7.4 (default, Sep 26 2013, 03:20:56) 

[GCC 4.7.3] on linux2

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

>>> import MySQLdb

没有报错提示MySQLdb模块找不到,说明安装OK ,下面开始使用python 操作数据库之前,我们有必要来回顾一下mysql的基本操作:

四、mysql 的基本操作

$ mysql -u root -p  (有密码时)

$ mysql -u root     (无密码时)
mysql> show databases;  // 查看当前所有的数据库

+--------------------+

| Database           |

+--------------------+

| information_schema |

| csvt               |

| csvt04             |

| mysql              |

| performance_schema |

| test               |

+--------------------+

6 rows in set (0.18 sec)
mysql> use test;   //作用与test数据库

Database changed

mysql> show tables;   //查看test库下面的表

Empty set (0.00 sec)
//创建user表,name 和password 两个字段

mysql> CREATE  TABLE  user (name VARCHAR(20),password VARCHAR(20));  Query OK, 0 rows affected (0.27 sec)
//向user表内插入若干条数据

mysql> insert into user values('Tom','1321');

Query OK, 1 row affected (0.05 sec)
mysql> insert into user values('Alen','7875');

Query OK, 1 row affected (0.08 sec)
mysql> insert into user values('Jack','7455');

Query OK, 1 row affected (0.04 sec)
//查看user表的数据

mysql> select * from user;

+------+----------+

| name | password |

+------+----------+

| Tom  | 1321     |

| Alen | 7875     |

| Jack | 7455     |

+------+----------+

3 rows in set (0.01 sec)
//删除name 等于Jack的数据

mysql> delete from user where name = 'Jack';

Query OK, 1 rows affected (0.06 sec)
//修改name等于Alen 的password 为 1111

mysql> update user set password='1111' where name = 'Alen';

Query OK, 1 row affected (0.05 sec)

Rows matched: 1  Changed: 1  Warnings: 0
//查看表内容

mysql> select * from user;

+--------+----------+

| name   | password |

+--------+----------+

| Tom    | 1321     |

| Alen   | 1111     |

+--------+----------+

3 rows in set (0.00 sec)

五、python 操作mysql数据库基础

#coding=utf-8

import MySQLdb
conn= MySQLdb.connect(

        host='localhost',

        port = 3306,

        user='root',

        passwd='123456',

        db ='test',

        )

cur = conn.cursor()
#创建数据表

#cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")
#插入一条数据

#cur.execute("insert into student values('2','Tom','3 year 2 class','9')")


#修改查询条件的数据

#cur.execute("update student set class='3 year 1 class' where name = 'Tom'")
#删除查询条件的数据

#cur.execute("delete from student where age='9'")
cur.close()

conn.commit()

conn.close()
>>> conn = MySQLdb.connect(host='localhost',port = 3306,user='root', passwd='123456',db ='test',)

Connect() 方法用于创建数据库的连接,里面可以指定参数:用户名,密码,主机等信息。

这只是连接到了数据库,要想操作数据库需要创建游标。

>>> cur = conn.cursor()

通过获取到的数据库连接conn下的cursor()方法来创建游标。
>>> cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")

通过游标cur 操作execute()方法可以写入纯sql语句。通过execute()方法中写如sql语句来对数据进行操作。
>>>cur.close()

cur.close() 关闭游标
>>>conn.commit()

conn.commit()方法在提交事物,在向数据库插入一条数据时必须要有这个方法,否则数据不会被真正的插入。
>>>conn.close()

Conn.close()关闭数据库连接

六、插入数据

通过上面execute()方法中写入纯的sql语句来插入数据并不方便。如:

>>>cur.execute("insert into student values('2','Tom','3 year 2 class','9')")

我要想插入新的数据,必须要对这条语句中的值做修改。我们可以做如下修改:
#coding=utf-8

import MySQLdb
conn= MySQLdb.connect(

        host='localhost',

        port = 3306,

        user='root',

        passwd='123456',

        db ='test',

        )

cur = conn.cursor()
#插入一条数据

sqli="insert into student values(%s,%s,%s,%s)"

cur.execute(sqli,('3','Huhu','2 year 1 class','7'))
cur.close()

conn.commit()

conn.close()

假如要一次向数据表中插入多条值呢?

#coding=utf-8

import MySQLdb
conn= MySQLdb.connect(

        host='localhost',

        port = 3306,

        user='root',

        passwd='123456',

        db ='test',

        )

cur = conn.cursor()
#一次插入多条记录

sqli="insert into student values(%s,%s,%s,%s)"

cur.executemany(sqli,[

    ('3','Tom','1 year 1 class','6'),

    ('3','Jack','2 year 1 class','7'),

    ('3','Yaheng','2 year 2 class','7'),

    ])
cur.close()

conn.commit()

conn.close()

executemany()方法可以一次插入多条值,执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数。

七、查询数据

也许你已经尝试了在python中通过

>>>cur.execute("select * from student")

来查询数据表中的数据,但它并没有把表中的数据打印出来,有些失望。

来看看这条语句获得的是什么

>>>aa=cur.execute("select * from student")
>>>print aa
5

它获得的只是我们的表中有多少条数据。那怎样才能获得表中的数据呢?进入python shell
>>> import MySQLdb

>>> conn = MySQLdb.connect(host='localhost',port = 3306,user='root',    passwd='123456',db ='test',)

>>> cur = conn.cursor()

>>> cur.execute("select * from student")

5L

>>> cur.fetchone()

(1L, 'Alen', '1 year 2 class', '6')

>>> cur.fetchone()

(3L, 'Huhu', '2 year 1 class', '7')

>>> cur.fetchone()

(3L, 'Tom', '1 year 1 class', '6')

...

>>>cur.scroll(0,'absolute')

 fetchone()方法可以帮助我们获得表中的数据,可是每次执行cur.fetchone() 获得的数据都不一样,换句话说我没执行一次,游标会从表中的第一条数据移动到下一条数据的位置,所以,我再次执行的时候得到的是第二条数据。

scroll(0,'absolute') 方法可以将游标定位到表中的第一条数据。

还是没解决我们想要的结果,如何获得表中的多条数据并打印出来呢?

#coding=utf-8

import MySQLdb
conn= MySQLdb.connect(

        host='localhost',

        port = 3306,

        user='root',

        passwd='123456',

        db ='test',

        )

cur = conn.cursor()
#获得表中有多少条数据

aa=cur.execute("select * from student")

print aa
#打印表中的多少数据

info = cur.fetchmany(aa)

for ii in info:

    print ii

cur.close()

conn.commit()

conn.close()

通过之前的print aa 我们知道当前的表中有5条数据,fetchmany()方法可以获得多条数据,但需要指定数据的条数,通过一个for循环就可以把多条数据打印出啦!执行结果如下:

5

(1L, 'Alen', '1 year 2 class', '6')

(3L, 'Huhu', '2 year 1 class', '7')

(3L, 'Tom', '1 year 1 class', '6')

(3L, 'Jack', '2 year 1 class', '7')

(3L, 'Yaheng', '2 year 2 class', '7')

[Finished in 0.1s]
Python 相关文章推荐
python删除文件示例分享
Jan 28 Python
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
Python中Class类用法实例分析
Nov 12 Python
多版本Python共存的配置方法
May 22 Python
python实现简单http服务器功能
Sep 17 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 Python
opencv调整图像亮度对比度的示例代码
Sep 27 Python
python二维键值数组生成转json的例子
Dec 06 Python
python设置表格边框的具体方法
Jul 17 Python
Python基于爬虫实现全网搜索并下载音乐
Feb 14 Python
python获得两个数组交集、并集、差集的方法
Mar 27 #Python
Flask入门教程实例:搭建一个静态博客
Mar 27 #Python
Python中的高级数据结构详解
Mar 27 #Python
python中反射用法实例
Mar 27 #Python
Python中使用摄像头实现简单的延时摄影技术
Mar 27 #Python
python根据出生日期返回年龄的方法
Mar 26 #Python
python获取远程图片大小和尺寸的方法
Mar 26 #Python
You might like
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
jquery 锁定弹出层实现代码
2010/02/23 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
2016/12/17 Javascript
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
说说如何在Vue.js中实现数字输入组件的方法
2019/01/08 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
Python如何读写二进制数组数据
2020/08/01 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
波兰在线运动商店:YesSport
2020/07/23 全球购物
医生实习工作总结的自我评价
2013/09/27 职场文书
公共事业管理本科生求职信
2013/10/07 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
2014年班长个人工作总结
2014/11/14 职场文书
小学同学聚会感言
2015/07/30 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书