2017-12-09 21 views
1

py3에서 MySQL에 연결하기 위해 pymysql 모듈을 사용합니다. 이 같은pymysql return error SQL 구문

내가 데이터베이스에 함수를 작성() 클래스 MySQLi는 생성자에 실행

def add_user_to_database(self, id, first_name, last_name, username, lang_code): 
    with self.MySQLi.cursor() as cursor: 
     cursor.execute('INSERT INTO users (id, first_name, last_name, username, language_code) VALUES ({0}, {1}, {2}, {3}, {4})'.format(id, first_name, last_name, username, lang_code)) 
    connection.commit() 

후 내가 실행 평가이 오류 :(보여 database.php :

raise errorclass(errno, errval) 
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' sepwhrr, en)' at line 1") 
+0

문자열 보간을 사용하여 SQL을 빌드하지 마십시오. –

+0

그래서 무엇을 사용합니까? @ 다니엘 로즈 만 –

답변

1

을 문자열 보간법을 사용하여 쿼리를 작성하면 이스케이프/큐토 문제를 얻을 수 있지만 매개 변수가있는 쿼리는 사용하기 쉽습니다.

sql = "INSERT INTO `users` (`id`, `first_name`) VALUES (%s, %s)" 
cursor.execute(sql, (id, first_name)