python和数据库学习笔记-在mac下配置python和mysql开发环境

一个小项目结束,于是可以继续研究。现在研究的课题和大数据有关,数据仓库目前是在vertica上面,然后计划用公有云的方案来处理计算能力的弹性问题,也就是将部分数据从vertica导入到hive+spark中,方案还是庞大复杂的,所以除了设计整个架构以外,也继续要考虑应用端的很多实践。和spark打交道的事情就交给java了,应用层交给php+js,中间最复杂的业务逻辑自然是我现在最为推崇的python了。

好,慢慢开始学习。

任务:

  1. 在mac上搭建一个vmware上的ubuntu虚拟机,安装mysql,这样从mac的开发环境访问,比较接近真实情况
  2. python在mac上设置为可以访问mysql,且不需要安装mysql

安装vmware,我是在 osx 10.11.2 上安装的 vmware 8.0,从 ubuntu 官网上下载的 ubuntu 15.04 desktop 版本,选择 desktop 版本其实作为 server 是不太好的,不过我对linux 的熟悉程度还不够,所以考虑有图形界面比较容易使用。

在虚拟机里面安装 ubuntu 还是比较容易的,然后安装 ubuntu 后再在命令上下安装 mysql:

sudo apt-get mysql-server

 

很多google上的资料说要注意 mysql 的 root 密码之类,我在安装的时候,mysql 是主动提醒要修改 root 密码的。我安装的 mysql 版本是 5.6.27。

在 ubuntu 下比较好用的 mysql 的图形管理客户端是官方的免费的 MySQL Workbench,我安装的版本是 6.2。用这个图形客户端设置用户名、数据库之类都非常方便。

mysql 安装后在默认情况下的确不允许其他电脑连接,这个弄了我很久,很多资料都说的不对,我觉得权限给的很高也不合适,很多资料说到的 bind ip 的修改,我发现是在 /etc/mysql/mysql.conf.d/mysqld.cnf 中修改,去掉 bindip = 127.0.0.1 的设置。

在 vmware 的虚拟机上安装好 ubuntu+mysql 之后,开始在mac 开发环境连接,同样是安装 MySQL Workbench 的 mac 版本,然后就可以测试连接之类,这个方法最方便实用。

这样,比起 localhost 当然是麻烦一点,主要是为之后多环境做好一些准备(开发环境、测试环境、准生产环境和生产环境)。在 mac 上用 xampp 也是不错的,改天再测试,更加适合笔记本电脑。

对于 python 怎么连接 mysql,发现 python 世界真的发展好快,方法很多。

因为准备之后要用 petl 来进行数据库的抽取和处理,所以按照 petl 的推荐,使用 pymysql 这个库。安装用标准的 pip 即可,我用的是conda,方法一样。

mac 开发环境下是不需要安装整个 mysql server 的,但是还是要安装一些驱动的,安装 mysql 标准的 connector,参考这里,下载后,在 mac 这里是一个 dmg 安装包,安装后,可以理解为 mysql 的驱动程序就安装好了。

import pymysql

connection = pymysql.connect(host='192.168.***.***',
                             user='***',
                             password='***',
                             db='test',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)

cur = connection.cursor()

cur.execute('select * from students')

for data in cur.fetchall():
    print(data)

 

当然这个用法是比较简单的,输出结果,运行ok

{‘tel’: ‘13811371377’, ‘sex’: ‘男’, ‘id’: 1, ‘age’: 20, ‘name’: ‘王刚’}

这个demo数据库的建立参考了这里,一个不错的mysql的基础教程。

大致这样,真实的开发项目会越来越复杂,且数据库应用的复杂度比独立应用高很多,希望这些经验能够给初学者们启发。

———————–后续补充

看到廖雪峰网站,上面有非常不错的python 2和3 的教程,对于安装mysql connector 有更加简单的办法

$ pip install mysql-connector-python --allow-external mysql-connector-python

 

以及非常简明实用的mysql 测试:

# 导入MySQL驱动:
>>> import mysql.connector
# 注意把password设为你的root口令:
>>> conn = mysql.connector.connect(user='root', password='password', database='test')
>>> cursor = conn.cursor()
# 创建user表:
>>> cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
# 插入一行记录,注意MySQL的占位符是%s:
>>> cursor.execute('insert into user (id, name) values (%s, %s)', ['1', 'Michael'])
>>> cursor.rowcount
1
# 提交事务:
>>> conn.commit()
>>> cursor.close()
# 运行查询:
>>> cursor = conn.cursor()
>>> cursor.execute('select * from user where id = %s', ['1'])
>>> values = cursor.fetchall()
>>> values
[('1', 'Michael')]
# 关闭Cursor和Connection:
>>> cursor.close()
True
>>> conn.close()