python连接mysql

13 篇文章 0 订阅

“”"
利用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(('订购用户数', '订购次数', '人均订购金额'))

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值