使用python用新数据替换旧数据

时间:2013-03-28 12:37:11

标签: python mysql sql database

我有两张桌子TBL1和TBL2。

TBL1有两列idnSql TBL2有3列datecustIduserId 我在TBL1中有17行,ID为1到17.每个nSql都有一个SQL查询。

例如nSql for

id == 1是:"select date, pId as custId, tId as userId from TBL3"
id == 2是:"select date, qId as custId, rId as userId from TBL4" ...

nSql结果总是相同的3列。

以下查询运行并将数据放入表TBL2中。如果那天TBL2中已有数据,我希望查询用新数据替换数据。 如果TBL2中没有数据,我想以正常方式放置数据。

例如,如果我在早上运行查询,如果我想在晚上再次运行它,我希望新数据替换当天的旧数据,因为数据将每天插入TBL2。

如果数据已经存在(如果由同事运行),我也不希望当天有重复数据。

我该怎么做?

谢谢。

(我是python的新手,如果有人能在步骤中解释并在代码中显示,我将不胜感激)

import MySQLdb

# Open connection
con = MySQLdb.Connection(host="localhost", user="root", passwd="root", db="test")

# create a cursor object 
cur = con.cursor()

selectStatement = ("select nSql from TBL1") 
cur.execute(selectStatement)
res = cur.fetchall()
for outerrow in res:
    nSql = outerrow[0]
    cur.execute(nSql)
    reslt = cur.fetchall()

    for row in reslt:
        date = row[0]
        custId = row[1]
        userId = row[2]
        insertStatement = ("insert into TBL2( date, custId, userId) values ('%s', %d, %d)" % (date, custId, userId))
        cur.execute(insertStatement)
        con.commit() 

1 个答案:

答案 0 :(得分:0)

时间戳(使用datetime)插入表中的所有数据。在插入之前,从日期时间为今天的表中删除。

对于MySQL,您可以在一天中使用函数to_days()来确定日期时间的开始日期:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_to-days

插入新行时,now()会让您使用与当前时间对应的日期时间值:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_now