按照廖雪峰的教程执行下去,发现了一些问题,但这不代表教程本身有问题。出现问题的原因有很多,比如说,教程是在 Mac 平台下执行通过的,在其他的平台就有可能出现新问题。下面就 windows7 下 python 安装使用 mysql 的几个步骤上的差异作记录。

安装 MySQL

教程提供的安装地址 : MySQL Community Server 5.6.x。因为我本地使用的 xampp 集成开发环境,版本也是 5.6,所以没有重复安装。

在Windows上,安装时请选择 UTF-8 编码,以便正确地处理中文。
在 Mac 或 Linux 上,需要编辑 MySQL 的配置文件,把数据库默认的编码全部改为 UTF-8 。MySQL 的配置文件默认存放在 /etc/my.cnf 或者 /etc/mysql/my.cnf

[client]
default-character-set = utf8

[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci

原教程里说得很清楚,但我看成了 windows 上也要在配置文件中添加以上的有关 UTF-8 编码的配置。所以重启 mysql 就无情报错了。

安装 MySQL 驱动

主要还是使用 pip 指令。原教程第一推荐的安装指令为:

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

其中的 --allow-external 特别强调要加上的,这个选项参数表示允许通过网络对外服务。但我在 windows 7 下执行,会提示 no such option: --allow-external。尝试去掉这个参数,安装成功!

教程中的备用指令 pip install mysql-connector ,以及评论里说教程报错推荐使用的另一个包安装指令:pip install pymysql ,这两个都没有去试,但如果使用第一推荐的安装指令不能安装成功的话,不妨一试。

连接 MySQL 代码演示

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

# 导入 MySQL 驱动
import mysql.connector

# 注意把 password 设为你的 root 口令
conn = mysql.connector.connect(host='xx.xx.xx.xx', user='xx', password='xx', database='test')
cursor = conn.cursor()

# 创建 user 表
cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')

# 插入一条记录
cursor.execute('insert into user (id,name) values (%s, %s)', ['1', 'Jason'])

print(cursor.rowcount)

# 提交事务

conn.commit()
cursor.close()

# 运行查询
cursor = conn.cursor()
cursor.execute('select * from user where id = %s', ('1',))
values = cursor.fetchall()
print(values)

# 关闭 cursor 和 connection
cursor.close()
conn.close()

本地测试不需要 connect() 方法的 host 参数,而连接远程 MySQL 服务器时,最好先测试一下域名、账号、地址是否能够连接通,推荐使用 navicat。