2014-04-01 4 views
0

저는 파이썬에서 sqlite3 모듈을 사용하고 있으며이 코드를 지금까지 가지고 있습니다. 데이터베이스에서 매일 기상 조건을 저장 했으므로 일부 행을 업데이트 된 데이터로 바꾸려면 코드가 필요합니다. 이 코드는 datetime 값이 new_data[0] 인 행을 찾고 있다고 가정합니다.물음표를 사용하여 sqlite3의 매개 변수화 된 쿼리

내가 쿼리를 매개 변수화 한 방식은 잘못되었지만 정확하고 가장 우아한 방법을 생각해 낼 수는 없습니다.

new_data = ['12 Mar 2014', 'sunny', 20, 12] 

conn = sqlite3.connect(database_file) 
c = conn.cursor() 
c.execute("UPDATE weather SET datetime = ?, condition = ?, high = ?, low = ? WHERE datetime = %s" new_data, %new_data[0]) 

답변

2

문자열 작업으로 매개 변수가있는 쿼리를 혼합합니다. 첫째, 매우 안전하지 않으며 둘째, 구문에 문제가 생겼습니다 (쿼리 문자열 뒤에 쉼표가없는 경우). 대신이 시도 :

new_data = ('12 Mar 2014', 'sunny', 20, 12, '12 Mar 2014',) 

conn = sqlite3.connect(database_file) 
c = conn.cursor() 
c.execute("UPDATE weather SET datetime = ?, condition = ?, high = ?, low = ? WHERE datetime = ?", new_data) 

자세한 내용은 여기에서 찾을 수 있습니다 : https://docs.python.org/2/library/sqlite3.html

+0

매우 영리를! trieber 주셔서 감사합니다! – andgeo

관련 문제