一、安装mysql
如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可。
Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的linux 仓库中都会有mysql ,我们只需要通过一个命令就可以下载安装:
Ubuntu\deepin
>>sudo apt-get install mysql-server>>Sudo apt-get install mysql-client
>>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 MySQLdbconn= 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()
>>> cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")
>>>cur.close()
>>>conn.commit()
>>>conn.close()
六、插入数据
通过上面execute()方法中写入纯的sql语句来插入数据并不方便。如:
>>>cur.execute("insert into student values('2','Tom','3 year 2 class','9')")
#coding=utf-8 import MySQLdbconn= 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 MySQLdbconn= 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
>>> 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 MySQLdbconn= 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]
本文向大家介绍Mysql数据库锁定机制详细介绍,包括了Mysql数据库锁定机制详细介绍的使用技巧和注意事项,需要的朋友参考一下 前言 为了保证数据的一致完整性,任何一个数据库都存在锁定机制。锁定机制的优劣直接应想到一个数据库系统的并发处理能力和性能,所以锁定机制的实现也就成为了各种数据库的核心技术之一。本章将对MySQL中两种使用最为频繁的存储引擎MyISAM和Innodb各自的锁定机制进行较为详
本文向大家介绍python+mongodb数据抓取详细介绍,包括了python+mongodb数据抓取详细介绍的使用技巧和注意事项,需要的朋友参考一下 分享点干货!!! Python数据抓取分析 编程模块:requests,lxml,pymongo,time,BeautifulSoup 首先获取所有产品的分类网址: 我们在产品分类的同时需要确定我们所访问的地址是产品还是又一个分类的产品地址(所以需
本文向大家介绍Mysql Explain 详细介绍,包括了Mysql Explain 详细介绍的使用技巧和注意事项,需要的朋友参考一下 Mysql Explain 这里做一个资料的全面整理。 一.语法 explain < table_name > 例如: explain select * from t3 where id=3952602; 二.explain输出解释 +----+---------
本文向大家介绍详细介绍Python中的偏函数,包括了详细介绍Python中的偏函数的使用技巧和注意事项,需要的朋友参考一下 Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。 在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。举例如下
本文向大家介绍Lua中os库详细介绍,包括了Lua中os库详细介绍的使用技巧和注意事项,需要的朋友参考一下 这个库通过表os实现 os.clock () 功能:返回一个程序使用CPU时间的一个近似值 例如: 输出: os.date ([format [, time]]) 功能:返回一个按format格式化日期、时间的字串或表 若设置time参数,则按time指定的时间格式化,否则按当前时间格式化
本文向大家介绍Mysql索引详细介绍,包括了Mysql索引详细介绍的使用技巧和注意事项,需要的朋友参考一下 Mysql索引概述 所有MySQL列类型可以被索引。对相关列使用索引是提高SELECT操作性能的最佳途径。根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。大多数存储引擎有更高的限制。 在MySQL 5.1中,对于MyISAM