2013-03-28 87 views
0

我有2個表TBL1和TBL2。使用python替換舊數據與新數據

TBL1有2列id,nSql
TBL2有3列date,custId,userId
我在TBL1中有17行,ID爲1到17.每個nSql都有一個SQL查詢。

例如nSql對於

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中。

這也是預防措施,如果數據已經存在(如果由同事運行),我不希望那天的重複數據。

我該怎麼辦?

謝謝。

(我是新來的蟒蛇,我將不勝感激,如果有人可以在步驟展示和講解代碼)

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() 
+0

爲什麼人們不遵循[PEP-8](http://www.python.org/dev/peps/pep-0008/) – pradyunsg

回答

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

+0

我是python的新手。有人可以放入代碼。我想我們可以在'if else'聲明中使用它。 類似如下的東西: if(curdate()== date on database) 刪除數據庫數據並插入新數據。 else 將新數據插入到數據庫中。 – Rio

+0

@Rio我的回答不是python。它是MySQL。請參閱鏈接:) – Patashu

相關問題