安装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='-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 ('-9-20','河北粮食','河北','2200','45.1')"cursor.execute(sql)mit() # 对存储的数据修改后,需要commitdatabase.close()# 改# 格式:"UPDATE 表名 SET 字段1=内容1,字段2=内容2 WHERE 条件;"sql = "UPDATE data SET date='-09-21' WHERE DATE='-09-20';"cursor.execute(sql)mit() # 对存储的数据修改后,需要commitdatabase.close()# 查# 基础语法:"SELECT 字段 FROM 表名 WHERE 条件"sql = "SELECT company FROM data WHERE date='-07-21';"cursor.execute(sql)result = cursor.fetchall()print(result)database.close()sql = "SELECT company,sum(price*weight) FROM data WHERE date='-07-21'group by company;"cursor.execute(sql)result = cursor.fetchall()print(result)database.close()# 删# 格式:"DELETE FROM 表名 WHERE 条件;" 条件的写法 :字段=内容sql = "DELETE FROM data WHERE date='-09-21';"cursor.execute(sql)mit() # 对存储的数据修改后,需要commitdatabase.close()'''
完成了增删查改
# 初始化指针sql3 ="SELECT SUM(weight) FROM data WHERE date>'-07-21' AND date<'-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_functionfrom datetime import datetimenow = datetime.now() # current date and timeyear = 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 datetimefirst_date = datetime.date(1899, 12, 31).toordinal() - 1print(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表中读取的时间数据/7/21