环境配置
Python是出了名的方便,但是在mac下搭建python访问 mysql 数据库的环境时还真碰到不少问题。
mysql 安装
mysql 安装简单需要注意:
连接MySQL出现报错client does not support authentication protocol requested by server consider
执行以下代码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
其中password需要改成你自己的密码,大概原因是MySQL8.0的加密方式改变了,但是比较老版本的navicate没有来得及支持,因此需要将mysql设置为支持传统的那种密码加密,如果用比较低版本的MySQL,比如MySQL57应该就不会出现这种问题。
FLUSH PRIVILEGES;
pymysql 模块安装
sudo pip install pymysql
sudo pip install MySQLdb
代码编写
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import pymysql
# 打开数据库连接
db = pymysql.connect("127.0.0.1", "root", "password", "python_statistics", charset='utf8')
#使用cursor()方法获取操作游标
cursor=db.cursor()
#使用execute方法执行SQL语句
cursor.execute("select * from phone_communication_order limit 10")
#使用 fetchone 方法获取一条数据
data = cursor.fetchone()
#输出查询结果
print(data)
#关闭数据源
db.close()
image.png
建表语句
/*
Navicat Premium Data Transfer
Source Server : local_本地
Source Server Type : MySQL
Source Server Version : 80017
Source Host : localhost
Source Database : python_statistics
Target Server Type : MySQL
Target Server Version : 80017
File Encoding : utf-8
Date: 08/26/2019 21:16:40 PM
*/
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for `phone_communication_order`
-- ----------------------------
DROP TABLE IF EXISTS `phone_communication_order`;
CREATE TABLE `phone_communication_order` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`dial_date` datetime NOT NULL,
`dial_channel` varchar(255) DEFAULT NULL,
`phone_num` varchar(255) DEFAULT NULL,
`phone_bind_num` int(11) DEFAULT NULL,
`efficacious_communicate` varchar(255) DEFAULT NULL,
`communication_landlord` int(11) DEFAULT NULL,
`order_count_7` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=48080 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
SET FOREIGN_KEY_CHECKS = 1;