天天看点

python操作本地数据库,Python基础篇-Python连接Mysql操作数据库

环境配置

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()

python操作本地数据库,Python基础篇-Python连接Mysql操作数据库

image.png

建表语句

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;