服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - mysql数据插入覆盖和时间戳的问题及解决

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

2022-10-11 16:18YF-海纳百川 Mysql

这篇文章主要介绍了mysql数据插入覆盖和时间戳的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

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关键字,避免重复插入记录可以使用:(主健会变化)

?
1
insert ignore into student_task_trace (student_id) VALUES (20)

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

?
1
REPLACE INTO student_task_trace (student_id) VALUES (20)

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

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

除非清空(truncate  表名)

2. 时间加减问题

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

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

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

3. 时间格式化问题

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

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

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

覆盖旧数据的mysql插入

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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       

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/yuanfang0903/p/10870627.html

延伸 · 阅读

精彩推荐
  • Mysqlmysql命令行如何操作

    mysql命令行如何操作

    这篇文章主要介绍了mysql命令行如何操作,还为大家分享了mysql添加环境变量的方法,感兴趣的小伙伴们可以参考一下 ...

    MYSQL教程网3402020-05-21
  • Mysql详解MySQL中事务的持久性实现原理

    详解MySQL中事务的持久性实现原理

    这篇文章主要介绍了详解MySQL中事务的持久性实现原理,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下 ...

    X先生9682021-04-06
  • MysqlMySql 如何实现无则插入有则更新

    MySql 如何实现无则插入有则更新

    这篇文章主要介绍了MySql 实现无则插入有则更新的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...

    东京易冷9422021-08-17
  • Mysql详解mysql三值逻辑与NULL

    详解mysql三值逻辑与NULL

    这篇文章主要介绍了mysql三值逻辑和NULL,感兴趣的同学们,可以参考下,并且把代码实验一下...

    华为云开发者社区9542021-07-16
  • MysqlMySQL中的SUM函数使用教程

    MySQL中的SUM函数使用教程

    这篇文章主要介绍了MySQL中的SUM函数使用教程,是MySQL入门学习中的基础知识,需要的朋友可以参考下 ...

    MYSQL教程网3282020-05-08
  • Mysql详解Mysql多表联合查询效率分析及优化

    详解Mysql多表联合查询效率分析及优化

    这篇文章主要介绍了Mysql多表联合查询效率分析及优化,需要的朋友可以参考下 ...

    MYSQL教程网4142020-05-16
  • MysqlMySQL中对于索引的基本增删查改操作总结

    MySQL中对于索引的基本增删查改操作总结

    这篇文章主要介绍了MySQL中对于索引的基本增删查改操作总结,索引可以提高MySQL的检索速度,需要的朋友可以参考下 ...

    MYSQL教程网4062020-05-31
  • MysqlMySQL infobright的安装步骤

    MySQL infobright的安装步骤

    这篇文章主要介绍了MySQL infobright的安装步骤,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下...

    AsiaYe5692021-05-06