2014-10-12 3 views
0

테이블에 일부 값을 삽입하려고하는데 행을 만들지 만 값이 기록되지 않습니다. 나는 (내가 원하는), 작동, 30 개 행이 추가되는 대신 VALUES("Test String")을 넣으면 지금Python pymysql INSERT INTO 빈 값 삽입

for i in range(2,6): 
    for team in ul[i]: 
     name = team.string #string from html element 
     print(name) #this works just fine, and prints the desired name 
     cur.execute("INSERT INTO teams (Name) VALUES(name)") 
conn.commit() 

, 그리고 이름을 가진 모든 : "테스트 문자열"여기 내 코드입니다.

그러나 name 변수를 넣으면 행도 추가되지만 열 값은 비어 있습니다. 문자열을 넣을 열은 VARCHAR입니다. 파이썬 문자열 변수의 경우 SQL 문이 어떻게 해석되는지에 대해 모르는 것이 있습니까?

답변

1

SQL 문은 간단한 문자열이며 변수 name이 삽입되지 않은 것 같습니다.

아마도 당신이 뭔가를 할 수 있습니다 :

sql = """INSERT INTO teams (Name) VALUES({0})""".format(json.dumps(name)) 
cur.execute(sql) 

을 내가 예를 들어, 특수 문자를 탈출 json.dumps(myVar)를 사용 따옴표, 등 ... 그 SQL 삽입 문을 깰 수도 있습니다.

때로는 SQL 문을 출력하고 클라이언트 (예 : MySQL Workbench)에서 실행하여 구문 적으로 올바른 문을 생성하는 데 필요한 변경 사항을 확인하는 것이 도움이되는 경우가 있습니다.

+0

감사합니다. 내'name' 변수의 타입이''인 것을 발견했습니다. 아마도 쿼리가 그것을 인식하지 못했을 것입니다. – Tiberiu

+0

'name'은 HTML 폼이나 뭔가 그런 식으로 삽입을 위해 쿼리 매개 변수를 사용해야합니다. 문자열 형식화는 SQL 주입 기회를 열어줍니다. – tuomur