anaconda+python+pycharm代码学习——自动化办公(二)——安装mysql数据库and使用Navicat 连接 mysql

安装mysql数据库一定注意
就安装5.版本的
别安装8.
我就是因为安装了8.
才一直安装不上
5.版本的超级好安装

这里参考这篇
非常好!!!
但是成功之后cmd输入mysql
却报错
mysql ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password: NO)
试了好几个解决方法都不行
于是为了跟我的Navicat连接
可以使用以下语句

mysql -u root -p

输入密码即可成功
在这里插入图片描述
这样就可以链接我的数据库啦
在这里插入图片描述
在navicat里面创建表
导入xlsx时
一直报错

Error Code: 1366. Incorrect string value: '\xE7\x8E\x8B\xE9\xB9\x8F… 数据库编码方式的问题

出现这个问题的原因是你的数据库编码、排序类型不是utf-8的,所以你创建的表的排序规则自然也不是utf-8类型的。
所以在用navicat创建char字符的有中文存在时
一定要设置一下这一栏
在这里插入图片描述
这样就可以成功导入
在这里插入图片描述

使用python对数据库mysql进行操作

代码如下

import pymysql

#database = pymysql.connect("127.0.0.1", "root", "1234", "db", charset='utf8')
# 格式:pymysql.connect("MySQL服务器地址", "用户名", "密码", "数据库名", charset='utf8')
database=pymysql.connect(host = '127.0.0.1' # 连接名称,默认127.0.0.1
,user = 'root' # 用户名
,passwd='1234' # 密码
,port= 3306 # 端口,默认为3306
,db='mysql' # 数据库名称
,charset='utf8' # 字符编码
)
cursor = database.cursor()
# 初始化指针

sql = "SELECT company,sum(price*weight) FROM data WHERE date='2018-07-21'GROUP BY company;"
cursor.execute(sql)
result = cursor.fetchall()
print(result)
database.close()

'''
# 增

# 格式:"INSERT INTO 表名 (字段1,字段2,字段3) VALUES (内容1,内容2,内容3);"
sql = "INSERT INTO data (date,company,province,price,weight) VALUES ('2019-9-20','河北粮食','河北','2200','45.1')"
cursor.execute(sql)
database.commit()  # 对存储的数据修改后,需要commit
database.close()

# 改
# 格式:"UPDATE 表名 SET 字段1=内容1,字段2=内容2  WHERE 条件;"

sql = "UPDATE data SET date='2018-09-21' WHERE DATE='2019-09-20';"
cursor.execute(sql)
database.commit()  # 对存储的数据修改后,需要commit
database.close()

# 查
# 基础语法:"SELECT 字段 FROM 表名 WHERE 条件"

sql = "SELECT company FROM data WHERE date='2018-07-21';"
cursor.execute(sql)
result = cursor.fetchall()
print(result)
database.close()

sql = "SELECT company,sum(price*weight) FROM data WHERE date='2018-07-21'group by company;"
cursor.execute(sql)
result = cursor.fetchall()
print(result)
database.close()

# 删
# 格式:"DELETE FROM 表名 WHERE 条件;" 条件的写法 :字段=内容

sql = "DELETE FROM data WHERE date='2018-09-21';"
cursor.execute(sql)
database.commit()  # 对存储的数据修改后,需要commit
database.close()
'''

完成了增删查改
在这里插入图片描述
在这里插入图片描述

# 初始化指针
sql3 ="SELECT SUM(weight) FROM data WHERE date>'2018-07-21' AND date<'2018-07-25' AND company='王五小麦' AND province='河北' "
cursor.execute(sql3)
print(cursor.fetchall()[0][0])

database.close()

datetime库详解

fromordinal(n)

使用日期序数构造对象,使用方法为:datetime.date.fromordinal(n),传入参数为一个整数序数,代表从公元1年1月1日开始的序数,序数每增加1代表增加1天,返回最终计算出的日期

toordinal()

相当于fromordinal(n)的逆过程,返回值即为fromordinal(n)中的日期序数n。

它用于返回日期的多边格里高利度序数,其中1年1月1日具有序数1。如果1年1月1日具有序数1,则1年1月2日将具有序数2,依此类推。 这是一个实例方法,这意味着它可以在类的实例上工作。

time.strftime(format[, t])

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)

%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 通过导入 __future__ 包来兼容 Python3.x print
# 如果使用了 Python3.x 可以删除此行引入
from __future__ import print_function

from datetime import datetime


now = datetime.now() # current date and time

year = now.strftime("%Y")
print("year:", year)

month = now.strftime("%m")
print("month:", month)

day = now.strftime("%d")
print("day:", day)

time = now.strftime("%H:%M:%S")
print("time:", time)

date_time = now.strftime("%Y-%m-%d, %H:%M:%S")
print("date and time:",date_time)

更详细的转换应用

excel里读取时间如何转换

import datetime


first_date = datetime.date(1899, 12, 31).toordinal() - 1
print(first_date)
if isinstance(43302.0, float):
    date_excel = int(43302.0)
    print(date_excel)
date_mysql = datetime.date.fromordinal(first_date + date_excel)
print(date_mysql.strftime("%Y-%m-%d"))

43302.0即为使用table.cell_value(1, 0)从excel表中读取的时间数据2018/7/21

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Laney_Midory

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值