2013-03-28 2 views
0

2 개의 테이블 TBL1 및 TBL2가 있습니다.파이썬을 사용하여 이전 데이터를 새 데이터로 바꾸기

TBL1에는 2 열 id, nSql이 있습니다.
TBL2은 3 열 date, custId, userId입니다.
ID가 1에서 17 인 TBL1에 17 개의 행이 있습니다. 각 nSql에는 SQL 쿼리가 있습니다.

ID == 1 예를 들어 nSql

이다 : "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 사용) (나는 누군가가 단계로 설명하고 코드에서 보여줄 수 있다면 감사하겠습니다, 파이썬에 새로운 오전). 삽입하기 전에 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을 처음 사용합니다. 누군가 코드에 넣을 수 있습니까? 나는 'else if'문장에서 사용할 수 있다고 생각한다. 다음과 같은 의사 코드가 있습니다. if (curdate() == date on database) 데이터베이스 데이터를 제거하고 새 데이터를 삽입하십시오. else 데이터베이스에 새 데이터를 삽입하십시오. – Rio

+0

@ 리오. 내 대답은 파이썬이 아니다. 그것은 MySQL입니다. 링크를 참조하십시오 :) – Patashu

관련 문제