[ 작업환경 ]

Flask 1.1

Python 3.7

 

필자는 flask-mysql 사용 중 발생했습니다.

 

 

 < 에러 문구 >

MySQLdb._exceptions.ProgrammingError: not enough arguments for format string

 

 

 < 원인 1 >

cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor) 
cursor.execute("INSERT INTO `pythondb`.`accounts` (`username`, `password`, `email`) VALUES (%s, %s, %s, %s)", (username, password, email)) 
mysql.connection.commit() 

 

 

cursor.excute 라인에서 변수 %s는 4개인데, 넣으려는 데이터는 3개입니다. %s의 수가 더 많을 경우 발생, 숫자 맞춰서 수정해주면 해결됩니다.

 

 

 

 

 < 원인 2 >

cursor.execute('SELECT * FROM users WHERE username = %s', (username))

위와 같이 잘못된 데이터를 %s에 넣으려는 경우 발생합니다.

(username) 은 튜플이고, 데이터를 하나만 가지고 있기 때문에 (username, ) 로 표기하거나, [username] 또는 username 으로 표기해야합니다.

 

cursor.execute('SELECT * FROM users WHERE username = %s', username)
cursor.execute('SELECT * FROM users WHERE username = %s', (username, ))
cursor.execute('SELECT * FROM users WHERE username = %s', [username])

 

 

 

+ Recent posts