2017-12-23 21 views
1

현재 시간 스탬프, 즉 now()을 내 mariadb (SQL) 테이블에 추가하려고하지만 터미널에서 스크립트를 실행하면 오류가 발생합니다.다른 변수와 함께 mariaDB 테이블에 타임 스탬프를 삽입하십시오.

이 스크립트의 문제 부분은 다음과 같습니다

cursor.execute("INSERT INTO outdoorsensorstable 
    (time, col2, col3, col4, col5, col6, col7) 
    VALUES (%s, %s, %s, %s, %s, %s, %s)", 
    (now(), '', '', data4, '', data6, '')) 

(데이터 4 및 데이터 6 전에이 내 스크립트에서 생성 된 변수입니다.)

내가 오류는 다음과 같습니다 TypeError: 'datetime.datetime' object is not callable

나는 다음과 같은 값 세그먼트에 now()을 배치하여이 문제를 해결하려고 :

cursor.execute("INSERT INTO outdoorsensorstable (time, col2, col3, col4, col5, col6, col7) VALUES (now(), %s, %s, %s, %s, %s, %s)", ('', '', '', data4, '', data6, '')) 

하지만 스크립트 실행에 또 다른 오류가 발생합니다 :

mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement 

어떤 아이디어 이유와 내가이 문제를 해결하는 방법을?

답변

1

두 번째 시도는 거의 옳습니다. 답장을 보내

sql = "INSERT INTO outdoorsensorstable (time, col2, col3, col4, col5, col6, col7) " 
sql += "VALUES (now(), %s, %s, %s, %s, %s, %s)" 
cursor.execute(sql, ('', '', data4, '', data6, '')) 
+0

감사합니다 : 그것은이 하드 코딩되고 같은 매개 변수가 아니기 때문에 그냥 NOW()에 대한 모든 매개 변수를 전달하지 않습니다. 어떻게해야합니까? 나는 인용 부호'cursor.execute ("INSERT INTO outdoorsensorstable (time, col2, col3, col4, col5, col6, col7) VALUES (now(), % s, % s, % s, % s, % s) now()에 해당하는 부분에 대해서는 ",", (data4, '', data6, ''))'이 표시되지만 다른 오류가 발생합니다. – Craver2000

+0

@ Craver2000 더 쉽게 읽을 수 있도록 답을 다시 포맷했습니다. 작동하지 않으면 다른 모양과 의견을 표하십시오. –

+0

@ Craver2000 실행 한 코드는 내 답변에 나와있는 _not_이 아닙니다. 당신이 잘못 복사하거나 길을 따라 오타를 만들었습니다. –