YS_20190808_Python_MySQL安装

Python的MySQL操作

Python标准数据库接口为Python DB-API, Python DB-API为开发人员提供了数据库应用 编程接口。
参考地址:https://wiki.python.org/moin/DatabaseInterfaces 。可以查看python支持数据库的详细列表。不同的数据库需要下载不同的DB-API模块。

DB-API使用流程:

  1. 引入API模块;
  2. 获取与数据库的连接
  3. 执行SQL语句和存储过程
  4. 关闭数据库连接

windows环境下MySQL的安装

MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python数据库 API 规范 V2.0,基于 MySQL C API 上建立的。
如果是windows系统:登录 https://pypi.python.org/pypi/MySQL-python/1.2.5 找到.exe结尾的包,下载安装。

MySQL分为客户端和服务器端,MySQL安装自带基于DOS命令的客户端和服务器端。

在Python环境下面安装mysql ----有2种按照方式

  1. Python3.2版本之前的安装方式-----企业已经淘汰,不再使用,但是你必须知道!
  2. Python3.2以后的安装mysql的方式如下 :---------企业大量使用。

注意: 安装mysql之前。确保win系统上面有Python环境!

  1. 在cmd找到Python的安装路径
  2. 进入Python的安装路径
  3. 通过命令pip install MySQLClient注册安装
    在这里插入图片描述
    备注: 以后软件安装尽量采用注册安装,
    注意事项:
  4. 用户名和密码设置root root
  5. 端口号:MySQL为3306,Oracle为5521
  6. 编码格式默认为英文,需要手动修改:utf8,数据库中没有“ - ”、“ * ”等特殊字符

当数据库发生乱码时,是否需要卸载MySQL,重新安装?
**解决方案:**进入mysql的按照目录下面,找到my.ini文件!此文件可以修改mysql的很多配置信息。修改之后重新启动mysqlservice服务。

MySQL的卸载

  1. 进入控制面板,删除mysql按照程序包。
  2. 进入按照目录 ,删除mysql文件
  3. 进入系统C盘的。win/用户下面找mysql的字样,全部删除!
  4. 在cmd窗口 : regedit 进入注册表
  5. 建议大家删除回收站 ,也可以不删除
  6. 重新启动计算机

SQL语句

  1. show databases ---------查看存在的数据库名称
  2. create database python -----创建Python数据库
  3. use shop ---------切换到当前的shop数据库下面建立表。语法 :use 数据名称
  4. mysql> delete from UserPython;-------- 删除的是表数据
  5. mysql> drop UserPython;----删除表,但是如果表里面有数据。直接使用drop,会破坏表结构、表数据。使用drop删除表,应该使用delete先删除数据。再使用drop删除表。
mysql> insert into UserPython(id,name,sex,age)value(1001,'zhangsan','男',30);
        #(3):mysql插入值有 3种方式
insert into UserPython(id,name,sex,age)value(1001,'zhangsan','男',30);
#此写法:是将字段和 值就行一一匹配对应,数据安全、数据好维护等--效率高!
#sql底层只执行一次匹配字段
          
insert into UserPython values(2,'zhangsan','m',30);
#此写法:是将字段和 值不是匹配对应,数据不是很安全、数据不好维护等--效率高!
#sql底层只能寻找和 key  有关系的values  ---执行2次以上匹配--不建议

insert into UserPython values('zhangsan','m',30);        
#此写法:必须满足id是具有主键Primary key机制  
#然后通过id主键去自动匹配数据库的字段对应的value

select * from UserPython;
#备注:在sql优化/查询里面,尽量不要使用 *  ---- * 会将数据库的列columns全部加载

柱状图:(未完成)

import os
import pandas
import MySQLdb
import matplotlib
import matplotlib.pyplot as plt

connection = MySQLdb.connect(  # 引入db连接 connect()
    host='127.0.0.1',
    user='root',
    passwd='123456',
    db='python',
    charset='utf8'
)
# 导入数据到MySQL
# 遍历目录,把里面的所有数据入库
rootDir = "F:\\MySQL数据等\\mysql-Python数据分析\\测试数据"


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 'UTF8' 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)
# plt.title('折线图')
# plot1 = plt.plot(statDay['统计日期'], statDay['订购用户数'],label = '用户')
# plot2 = plt.plot(statDay['统计日期'], statDay['订购次数'])
# plot3 = plt.plot(statDay['统计日期'], statDay['人均订购金额'])
# plt.show()
# plt.legend(('订购用户数', '订购次数', '人均订购金额'))

s = pandas.read_sql('select * from 日订购统计表;', con=connection)

connection.close()

font = {
    'family': 'SimHei'
}

matplotlib.rc('font', **font)
plt.title('柱状图')
plt.xlabel('日期')
width = 2.0
plot1 = plt.bar(s['统计日期'], s['订购次数'], label='次数')
# plot2 = plt.bar(s['统计日期'], s['订购用户数'], label='用户')
# plot3 = plt.bar(s['统计日期']+2*width, s['人均订购金额'],label = '人均')
plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值