主页 使用Python操作MySQL数据库
Post
Cancel

使用Python操作MySQL数据库

前言

为了实现不斷學習 與時俱進周末把大部分时间放在了学习Python上. 在最近的学习中有一些有价值的部分都摘录整理出来放到博客上,以免后续用到的时候忘记时回来翻翻博客.

我是在study.163.com的这个《全栈数据工程师养成攻略》课程中学习的,推荐大家学习一下.

本篇主要内容

主要分为三个大部分

  1. 搭建Web环境
  2. 数据库MySQL的使用方法
  3. 使用Python操作MySQL

搭建Web环境

  • Web环境: Apache、Nginx…
  • Web服务启动中相关配置.

Web环境: Apache、Nginx…

两个平台的相关的下载

MAMP: Mac, Apache, MySQL, PHP

Mac, Apache, MySQL, PHP 缩写MAMP

WAMP: Windows, Apache, MySQL, PHP

Windows, Apache, MySQL, PHP 缩写WAMP

当然还有linux版本这里就不做多介绍了

总之需要安装这个软件进行环境配置的搭建.

我这里用MAMP举例说明一下

打开之后

Web服务启动中相关配置

开启Apatch ServerMySQL Server服务(右上角). 然后点击Perferences,进行本地端口配置.

这里有两种默认配置(红色框选部分)

如果把服务开启的话那么打开浏览器输入:localhost:8888就可以看到相关的效果

localhost == 127.0.0.1

8888是服务的端口

下面这张图可以选择文件根目录

什么意思呢?

就是你把网页的相关文件放到 这个文件夹的话 就会在浏览器上直接浏览.

这张图中间的Open Start Page.

进入到数据库配置相关

配置数据库名称

输入表名

配置数据库表

配置完右侧完成

数据库MySQL的使用方法

  • 基本概念
  • 终端配置Python MySQL
  • Navicat 数据的导出导入
  • 个人的习惯搞法

基本概念

CURD操作:

  • C Create
  • R Read
  • U Update
  • D Delete

这就是数据库相关知识中

终端配置Python MySQL

在终端中使用如下指令安装MySQL环境

1
pip install MySQL-python

我安装的时候出错了

最后执行

1
brew install mysql-python

然后再去执行pip install MySQL-python

如何测试是否成功

在shell中输入python

执行

1
2
import MySQLdb

如果没有错误就是OK的.

这个数据库可视化操作软件大家自行下载吧

打开之后点击左上角点击新建connect 选择MySQL

接着配置数据库的信息

这里的名称就是__数据库名称__ host地方本地,如果是远程的话,填写ip或者url
port前面我们设置了8889
账号和密码输入root(前面图里面已经看到了账号密码都是一样的)

下面就是连接数据库

下面这张图就是

数据库导出和导入,当然也可以导出导入数据表.

个人的习惯搞法

  • 使用phpmyadmin新建数据库和数据表
  • 使用python插入、读取、更新、修改数据
  • 使用Navicat导出数据库
  • 使用phpmyadmin导入数据库

最后deloy(部署)到线上,这样就可以避免各种错误操作数据库的问题

使用Python操作MySQL

这个没啥就是coding部分,使用之前把点击这里下载这个文本文件

我们用sublime text新建一个text.py文件

1
2
3
4
5
6
7
8
9
#!/usr/bin/env python
# coding:utf8

import sys
reload(sys)
sys.setdefaultencoding("utf8")

import MySQLdb
import MySQLdb.cursors

注意:test.py最好和douban_movie_clean.txt保持在同一个目录这样就不用写路径了

接着创建数据库连接

1
2
3
4
5
6
7
8
9
10
11
12
db = MySQLdb.connect(host='127.0.0.1', user='root', passwd='root', db='douban', port=8889, charset='utf8', cursorclass=MySQLdb.cursors.DictCursor) //1
db.autocommit(True) //2
cursor = db.cursor() //3

fr = open('douban_movie_clean.txt','r') //4

fr.close() //4

cursor.close() //3
db.close() //1

注意 db记得用完关闭,cursor也要记得关闭, fr是文件的读写 和数据库没啥关系也需要记得用完关闭

下面解释一下什么意思

  1. db创建输入库实例,输入参数 host(这里用的是127.0.0.1也可以换成localhost)、passwddbportcharsetcursorclass.
  2. 自动改完提交完成更新数据库
  3. 通过db实例拿到一个连接cursor 每次都通过cursor.execute()执行增删改查操作sql语句
  4. 读取本地的文本文件

大概就是这个意思

读取数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Create
# 读取数据
fr = open('douban_movie_clean.txt', 'r')

count = 0
for line in fr:
	count += 1
	# count表示当前处理到第几行了
	print count
	# 跳过表头
	if count == 1:
		continue

	# strip()函数可以去掉字符串两端的空白符
	# split()函数按照给定的分割符将字符串分割为列表
	line = line.strip().split('^')
	# 插入数据,注意对齐字段
	# execute()函数第一个参数为要执行的SQL命令
	# 这里用字符串格式化的方法生成一个模板
	# %s表示一个占位符
	# 第二个参数为需要格式化的参数,传入到模板中
	cursor.execute("insert into movie(title, url, rate, length, description) values(%s, %s, %s, %s, %s)", [line[1], line[2], line[4], line[-3], line[-1]])

# 关闭读文件
fr.close()

通过我们拿到的cursor连接实例来执行cursor.execute()函数进行sql的插入操作.

来看下结果

更新数据

更新数据 比如我想把id=1的记录更新一下title字段和length长度

1
2
# Update
cursor.execute("update movie set title=%s, length=%s where id=1", ['孙亚洲', 999])

读取数据

1
2
3
# Read
cursor.execute("select title, length from movie where id=1")
movies = cursor.fetchone()

删除数据

1
2
# Delete
cursor.execute("delete from movie where id=%s",[2])

下面看下完成的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/env python
# coding:utf8

import sys
reload(sys)
sys.setdefaultencoding("utf8")


import MySQLdb
import MySQLdb.cursors

db = MySQLdb.connect(host='127.0.0.1', user='root', passwd='root', db='douban', port=8889, charset='utf8', cursorclass=MySQLdb.cursors.DictCursor)
db.autocommit(True)
cursor = db.cursor()

fr = open('douban_movie_clean.txt','r')

# Create
count = 0
for line in fr:
	count += 1
	print count
	if count == 1:
		continue
	line = line.strip().split('^')
	cursor.execute("insert into movie(title, url, rate, length, description) values(%s, %s, %s, %s, %s)", [line[1], line[2], line[4], line[-3], line[-1]])
fr.close()

# Update
cursor.execute("update movie set title=%s, length=%s where id=1", ['孙亚洲', 999])

# Read
cursor.execute("select title, length from movie where id=1")
movies = cursor.fetchone()

print len(movies)
# print movies[0]


# Delete

cursor.execute("delete from movie where id=%s",[2])


cursor.close()
db.close()

总结

通过学习python操作数据库很有收获,想起了大学李月辉老师教我怎么用java连接数据库. 在工作中我们可能会遇到一大堆数据如何插入到数据等问题,通过学习了本章内容可以很容易的处理批量数据.

关于更多的SQL语句 参考SQL 教程

全文完

该博客文章由作者通过 CC BY 4.0 进行授权。

AVAudioSession-Category各种姿势

NLP分词WordEmbeding