mysql数据插入覆盖和时间戳的问题及解决


Posted in MySQL onMarch 25, 2022

数据插入覆盖和时间戳问题

1.数据插入问题

当我们insert数据时,插入datetime类型,此类型的字段,存储数据格式为:  YYYY-MM-DD,它支持的范围为'1000-01-01'到'9999-12-31',并且允许使用字符串或数字为此列复制。

日期赋值时,允许“不严格”语法:任何标点符都可以用做日期部分或时间部分之间的间割符。例如,'98-12-31 11:30:45'、'98.12.31 11+30+45'、'98/12/31 11*30*45'和'98@12@31 11^30^45'是等价的,对于不合法的将会转换为:0000-00-00 00:00:00

我们传的时候 insert into test(count_data) values (20190922). 不要把20190922转为2019-09-22

使用ignore关键字,避免重复插入记录可以使用:(主健会变化)

insert ignore into student_task_trace (student_id) VALUES (20)

使用Replace,如果旧记录与新记录有相同的值,则在新记录被插入之前,旧记录被删除,存入新纪录:

REPLACE INTO student_task_trace (student_id) VALUES (20)

如果有主键的情况下,可以通过惟一索引来防止重复数据的插入

数据插入一个事件的时候 有好几个不同的值 总会覆盖 ,所以需要给不同值的字段设置个唯一索引。

除非清空(truncate  表名)

2. 时间加减问题

如果想做时间加减的话 必须把时间变成unix时间戳 如当前时间—创建时间

SELECT user_id, device, UNIX_TIMESTAMP(create_time) create_time from t_user

int(time.time() - create_time).   不转unix无法操作

3. 时间格式化问题

如果想让时间正常显示,就需要在写sql的时候给他做格式化

SELECT DATE_FORMAT(grant_end_time, '%%Y-%%m-%%d') grant_end_time from xxxx

mysql数据插入覆盖和时间戳的问题及解决

覆盖旧数据的mysql插入

1、添加唯一索引需要保证该值只有一个

2、唯一索引需要放在最前面

3、更新的数据需要在list后面再添加一个来更新

from requests_html import HTMLSession
import pymysql
import json
import time
def mysql_db():
    a = html_data()
    #print(tuple1)
    db = pymysql.connect(
        host="localhost",
        user="root",
        passwd="zdl12345",
        database = "runoob_db",
        charset = "utf8"
    )
    cc = db.cursor()
    #sql1 = "create table sites2(id int primary key not null auto_increment,rn varchar(255) ,nn varchar(255),ol varchar(255),c2name varchar(255))"
    #cc.execute(sql1)
    #sql3 = "alter table sites2 add unique (nn)"
    #cc.execute(sql3)
    
    #print("add success")
    cc.execute("select * from sites2")
    results = cc.fetchall()
    
    #print(zb_list)
    list = []
    for i in target_data:
        #print(i)
        for k in i.keys():
            #print(key)
        
            if k == "c2name":
                list = [i["nn"],i["rn"],str(i["ol"]),i["c2name"],str(i["ol"])]
                tuple1 = tuple(list)
                #print(tuple1)
                
                sql = "insert into sites2(nn, rn, ol, c2name) values (%s, %s, %s, %s) on duplicate key update ol = %s"
                val = tuple1
                cc.execute(sql,val)
                db.commit()
                
    db.close()
    print("insert success")
def html_data():
    global target_data
    session = HTMLSession()
    url = "https://www.douyu.com/gapi/rkc/directory/1_1/1.html"
    #headers = {'Accept-Charset': 'UTF-8'}
    database = session.get(url)
    data = database.html.text
    #print(data)
    
    jsondata = json.loads(data)
    #print(jsondata)
    target_data = jsondata["data"]["rl"]
    #print(target_data[0])
    #print(type(target_data))
    #return target_data
                 
#html_data()
#while True:
    
    mysql_db()
    time.sleep(1)
    data2 = time.time()
    s = data2 - data1

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

MySQL 相关文章推荐
详解MySQL的Seconds_Behind_Master
May 18 MySQL
正确使用MySQL update语句
May 26 MySQL
MySQL子查询中order by不生效问题的解决方法
Aug 02 MySQL
Node-Red实现MySQL数据库连接的方法
Aug 07 MySQL
MySQL数据库中varchar类型的数字比较大小的方法
Nov 17 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
Mar 03 MySQL
Nebula Graph解决风控业务实践
Mar 31 MySQL
MySQL分区路径子分区再分区
Apr 13 MySQL
MySQL 数据库 增删查改、克隆、外键 等操作
May 11 MySQL
MySQL 自动填充 create_time 和 update_time
May 20 MySQL
MySQL常用慢查询分析工具详解
Aug 14 MySQL
MySQL使用IF语句及用case语句对条件并结果进行判断 
Sep 23 MySQL
MySQL实战记录之如何快速定位慢SQL
Mar 23 #MySQL
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
Mar 23 #MySQL
简单聊一聊SQL注入及防止SQL注入
Mar 23 #MySQL
浅谈MySQL中的六种日志
Mar 23 #MySQL
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
实战 快速定位MySQL的慢SQL
关于MySQL临时表为什么可以重名的问题
You might like
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
php 删除无限级目录与文件代码共享
2008/11/22 PHP
PHP答题类应用接口实例
2015/02/09 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
删除javascript所创建子节点的方法
2015/05/21 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
2017/09/15 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
vue.js中导出Excel表格的案例分析
2019/06/11 Javascript
jQuery实现日历效果
2020/09/11 jQuery
浅谈Python 对象内存占用
2016/07/15 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
Python将string转换到float的实例方法
2019/07/29 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
Python模拟FTP文件服务器的操作方法
2020/02/18 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
韩国著名的在线综合购物网站:Akmall
2016/08/07 全球购物
俄罗斯电动工具和设备购物网站:Vseinstrumenti.ru
2020/11/12 全球购物
《在家里》教后反思
2014/03/01 职场文书
春季防火方案
2014/05/10 职场文书
党员服务承诺书
2014/05/28 职场文书
商铺消防安全责任书
2014/07/29 职场文书
医学生自荐信范文
2015/03/05 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
青年干部培训班学习心得体会
2016/01/06 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
教师远程培训心得体会
2016/01/09 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
手残删除python之后的补救方法
2021/06/26 Python
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL