“”"
利用MySQL 、Oracle进行python数据分析
一:mysql数据库思想以及操作流程
(1):关系型数据库
1对1 1对n n对n
(2)在python数据分析、人工智能技术领域
是将数据通过numpy pandas matplotlib 进行数据的分析
体现数据发布思想,将数据发布给客户。人工智能----作为数据集!
二:mysql数据库实战
(1)只能满足小型企业级开发,对于数据集不是很合适!数据存储量大,数据比较安全
(2)oracle ----针对大数据/人工智能
(3)DDL DCL DML
DML:数据库操作语言 ----用于检索或者修改数据
DDL:数据库定义语言------用于定义数据结构
DCL:数据库控制语言--------------用来定义数据库用户权限----DBA
三:mysql分为客户端和服务器端-----mysql自身会携带基于DOS的客户端和服务器端
例如:注意事项
i:用户名和密码的设置 root root
ii:默认端口mysql 3306 oracle:5521
iii:编码格式 默认英文 手动改为utf8 数据库里面没有–
注意:数据库里面没有- * …特殊字符
mysql照到my.init文件!此文件可以修改mysql诸多配置
重启mysqlservice服务
卸载
控制面板,删除mysql程序包
进入目录,删除mysql文件
进入c盘/用户 下找到mysql,全部删除
cmd进入注册表:reredit 删除注册表
最好清空回收站
重启计算机
四:重点命令
i:show databases 表示首先是当前数据库
ii:1)将字段与值一一匹配,数据安全,数据好维护—效率高
2)字段与值不是匹配对应,数据不是很安全,数据不好维护—效率高
sql底层智能寻找和key有关的value—执行两次以上
3)必须满足id具有主键去自动匹配数据库的字段对应的value
sql
iii:char() varchar()
(1)varchar数据类型执行数据的速度快,但是会给磁盘产生垃圾磁盘—数据库回收磁盘,会造成内存浪费
mysql自身内存不大,不建议使用!但是oracle里面建议varchar----oracle追求读写速度
(2)char类型运行速率较快,但是不产生磁盘垃圾碎片
drop删除表,如果表里有数据,直接使用drop,会破坏表结构表数据–不建议直接使用
使用drop删除表,应该使用delete先删除数据。使用drop删除表
五:python操作数据库
1)在python下安装mysql—有两种安装方式
i:oython3.2之前的 已被淘汰
ii:确保win下有python环境
“”"
import os;
import pandas;
import MySQLdb;
import matplotlib;
import matplotlib.pyplot as plt;
#链接数据库
connection = MySQLdb.connect(
host='127.0.0.1',
user='root',
passwd='123456',
db='pythontest',
charset='utf8'
);
rootDir="D:\\pythondata\\";
#定义一个发送sql方法
def exeSQL(sql):
print("exeSQL: " + sql)
connection.query(sql);
for fileName in os.listdir(rootDir):
path = os.path.join(rootDir, fileName)
if ".txt" in fileName:
print(path)
path = path.replace("\\", "\\\\");
#拿到文件名中的时间字段
datetime = fileName[0:8];
tableName = "订购明细" + datetime;
#建表、导入数据到表中
exeSQL("drop table if exists " + tableName)
exeSQL("create table " + tableName + "(订单编号 int, 订购日期 datetime, 用户ID int, 产品 char(8), `单价(元)` int, 数量 int, 订购金额 int);");
#mysql将数据导入表的固定语句
exeSQL("LOAD DATA LOCAL INFILE '" + path + "' INTO TABLE `" + tableName + "` CHARACTER SET 'GBK' COLUMNS TERMINATED BY ',' LINES TERMINATED BY '\\n' IGNORE 1 ROWS;");
#建立日订购统计表
exeSQL("create table if not exists 日订购统计表(统计日期 date, 订购用户数 int, 订购次数 int, 人均订购金额 double, 订购总额 double);");
exeSQL("delete from 日订购统计表 where 统计日期='" + datetime + "';");
exeSQL("insert into 日订购统计表 select '" + datetime + "', count(distinct 用户ID), count(用户ID), sum(订购金额)/count(distinct 用户ID), sum(订购金额) from `" + tableName + "`;");
statDay = pandas.read_sql('select * from 日订购统计表;', con=connection);
#记得用完要关闭连接
connection.close();
print('\n日订购统计表数据如下:');
print(statDay);
#绘图
font = {
'family' : 'SimHei'
}
matplotlib.rc('font', **font);
plot1 = plt.plot(statDay['统计日期'], statDay['订购用户数']);
plot2 = plt.plot(statDay['统计日期'], statDay['订购次数']);
plot3 = plt.plot(statDay['统计日期'], statDay['人均订购金额']);
plt.show();
plt.legend(('订购用户数', '订购次数', '人均订购金额'))