이 오류는 SQL이 아닌 Python에서 발생합니다.
어쨌든 age
의 이름은 '[email protected]'
과 같습니다. 실수로 이메일 주소로 age
를 할당하고 그 문제를 해결 곳
>>> age = '[email protected]'
>>> int(age)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '[email protected]'
>>>
당신은 찾을 필요가 : 당신이 int(age)
을 할 때, 당신은 ValueError
얻을. 코드가 게시되지 않았기 때문에이 작업을 어떻게 수행했는지 정확히 알 수는 없지만 일반적으로 반복적으로 부정확하게 압축을 풀었 기 때문에 발생합니다. 해야
name, email, date, age = ['Joe', 20, '11/12/2014', '[email protected]']
: 같은 뭔가
name, age, date, email = ['Joe', 20, '11/12/2014', '[email protected]']
또한 SQL 명령을 구축 할 서식 문자열을 사용해서는 안됩니다. 대신, 터플로 인수를 전달하고 참조 할 ?
를 사용
cur.execute("insert into client values(?,?,?,?)", (name, email, date, age))
을 docs에서 :
는 일반적으로 SQL 작업이 파이썬 변수의 값을 사용해야합니다. 이렇게하면 파이썬의 문자열 문자열을 사용하여 쿼리를 조합하면 안됩니다. 프로그램 은 SQL 주입 공격에 취약합니다 ( 에 대한 내용은
http://xkcd.com/327/을 참조하십시오).
int % % d % s이 (가) – Hackaholic
int에 대해 % d을 (를) 원한다고 생각합니다. 그러나 오류 메시지는 'age'가 실제로 "[email protected]"임을 나타냅니다. – Madbreaks
나는 그것도 생각했다. 그러나 어째서 지문을 따라 다니고 매 변수마다 문자열을 따라갈 때마다 내 나이 변수가 내 이메일인지 알 수 없다. – AbdulHamid