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

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

mysql数据插入覆盖和时间戳的问题及解决 目录
  • 数据插入覆盖和时间戳问题
    • 1.数据插入问题
    • 2. 时间加减问题
    • 3. 时间格式化问题
  • 覆盖旧数据的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关键字,避免重复插入记录可以使用:(主健会变化)

    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插入

    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        
    

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

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://www.outofmemory.cn/sjk/2997159.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-09-26
    下一篇 2022-09-26

    发表评论

    登录后才能评论

    评论列表(0条)

    保存