본문 바로가기
MySql

MySQL Python에서 mysql로 ​​준비된 문 사용

by 베이스 공부 2020. 11. 25.
반응형

Python에서 준비된 문으로 SQL을 사용하려고합니다. Python에는 자체 메커니즘이 없으므로 SQL을 직접 사용하려고합니다.

sql = "PREPARE stmt FROM ' INSERT INTO {} (date, time, tag, power) VALUES (?, ?, ?, ?)'".format(self.db_scan_table)
self.cursor.execute(sql)

그런 다음 나중에 루프에서 :

sql = "EXECUTE stmt USING \'{}\', \'{}\', {}, {};".format(d, t, tag, power)
self.cursor.execute(sql)

그리고 루프에서 다음을 얻습니다.

MySQL Error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''2014-12-25', '12:31:46', 88000000, -6.64' at line 1

무슨 일이야?

 

해결 방법

 


귀하의 경우에는 다음과 같습니다.

sql = ('INSERT INTO {} (date, time, tag, power) VALUES '
       '(%s, %s, %s, %s)'.format(self.db_scan_table))

그리고 나중에 "루프에서"다음과 같이 입력합니다.

self.cursor.execute(sql, (d, t, tag, power))

추가 문자열 형식 지정없이- MySQLdb 모듈은 사용자를 대신하여 부분을 준비하고 실행합니다 (불필요한 작업 반복 등을 피하기 위해 캐시 할 수 있음).

언급 한 "루프"의 특성에 따라 .execute_many 에 대한 단일 호출 (두 번째 인수로 튜플 시퀀스 사용)이 전체를 대신 할 수 있음을 고려하십시오. 루프 (데이터를 DB에 삽입하는 것 이상으로 해당 루프 내에서 더 많은 처리가 필요하지 않은 경우).


 

참조 페이지 https://stackoverflow.com/questions/27649759

 

 

반응형

댓글