문제 : 2000-01-05의 col값이 아무 값이 없을때
where date is null 했을때
결과값은 2000-01-05가 나온다.
하지만 select col from table where date = '2000-01-05' 를 하면,
None이라고 출력된다.
그래서 전자의 경우는
null인 곳을 찾을떄
fetchall 의 길이가 >0 이면 null이 아니고
fetchall의 rlfdlrk ==0 이면 값이 안들어있는 col이다.
후자의 경우는 길이가 먹히지 않는다. none이라고 값이 나오기 떄문이다.
if "None" in result:
으로 체크하겠다.
그리고 밑에 조건문을 넣을 예정..
# 날짜 관련은 https://godoftyping.wordpress.com/2015/04/19/python-%EB%82%A0%EC%A7%9C-%EC%8B%9C%EA%B0%84%EA%B4%80%EB%A0%A8-%EB%AA%A8%EB%93%88/ 블로그글 참고
import datetime
now = datetime.datetime.now() # 현재 날짜 까지 받음
nowDate = now.strftime('%Y-%m-%d')# 나는 - 가 필요함으로 strfttime을 사용
print(nowDate)
yesterday= now - datetime.timedelta(days=1)
yesterdayDate= yesterday.strftime('%Y-%m-%d')
print(yesterdayDate)
2017-03-11 2017-03-10
date_time = datetime.datetime.now() # 현재 날짜 까지 받음
mysql_time = date_time.strftime('%Y-%m-%d')
final_date= '2004-01-01'
def DateCounter(num):
global mysql_time
global date_time
yesterday = num - datetime.timedelta(days=1)
date_time= yesterday
mysql_time = yesterday.strftime('%Y-%m-%d')
while (mysql_time >= final_date):
DateCounter(date_time)
print mysql_time
2003-12-31 까지 돌고 날짜 역순 끝남
활용:
date_time = datetime.datetime.strptime('2017-02-02 12:23:38', '%Y-%m-%d %H:%M:%S') # 원하는 시점 설정
print date_time
mysql_time = date_time.strftime('%Y-%m-%d')
final_date= '2004-01-01' # 2004년까지만 내려갈것
def DateCounter():
global mysql_time
global date_time
yesterday = date_time- datetime.timedelta(days=1)
date_time = yesterday
mysql_time = date_time.strftime('%Y-%m-%d')
def Get_value(colname,table,time):
sql= "select "+ colname + " from " + table + " where date = '"+ time +"'"
curs.execute(sql)
result = curs.fetchall()
for row in result:
global x
x= row[0]
def CopyUpdate(start, end,colname,table,val):
updatesql= "set "+ colname + " = "+ val +" from " + table + " where (date < '"+ start +"'" + " and (date<'"+ end +"')"
print updatesql
def StartFinding(time,colname,table):
global mysql_time
temp_date= mysql_time
while (mysql_time>=final_date):
DateCounter(time)
Get_value(col,table)
if x is not None:
global Start_date
Start_date= mysql_time
CopyUpdate(start_date,temp_date,table,colname)
break
i=0
while(i<10000):
i=i+1
DateCounter()
Get_value(cols[3],namelist[1],mysql_time)
if x is None:
print "find "+mysql_time+" is None"
StartFindingTest(cols[3],namelist[1])
2017년부터 2004년까지 내려가다가,
데이터가 없는 날짜를 찾으면, 그 날짜A를 기억하고
다시 계속 내려간다.
내려가면서 데이터가 있는 날짜를 찾으면, 날짜 B를 저장한다.
B 날짜부터 아까 첫 null의 날짜A까지
B날짜에서 얻은 데이터를 입력한다.
그리고 다시 내려가면서 반복 작업을 한다. 2004년까지
'OLD개발이야기 > Python-mysql' 카테고리의 다른 글
mysql 된다 (0) | 2017.04.22 |
---|---|
mysql - python : table 존재 확인 (0) | 2017.04.02 |
python-mysql: find null data and replce -1 (0) | 2017.03.09 |
python-mysql - null 값을 가진 날짜, 연도 구하기 (0) | 2017.03.09 |
python-mysql 엑셀 읽기, sql 에 업데이트 하기,( 컬럼별 ) (0) | 2017.03.09 |