2013-07-30 1 views
-1
내가 두리스트는 파이썬 함께 테이블에 목록에서 값을 삽입 할 필요가

와 다른 테이블에서 테이블의 말 :삽입 문자열은 'SQL

A = [(1,2,Don't Use), (2,4, None), (3,None, Need "Access") 

내가 pyodbc 및 SQL 명령을 사용하려고했습니다. 텍스트가 " 또는 ' 같은 특수 문자가없는 경우

sql = "INSERT INTO New_Table(SL, ID, text) 

     VALUES ('%s', '%s', '%s)" % (A[i][0], A[i][1], A[i][2]) 

그것은 잘 작동합니다. 이 프로그래밍 작업을 처음 접했을 때이 작업을 수행하는 방법을 찾고 있습니다

+0

'작은 따옴표'또는 '따옴표'라고합니다. 그 용어는 더 검색 가능합니다. – keyser

+0

https://code.google.com/p/pyodbc/wiki/GettingStarted#Parameters – user2357112

+2

SQL 주입 및 기타 보안 vunerabilities에 대한 코드가 열려 있으므로 Python 문자열 대체를 SQL로 사용하지 마십시오. –

답변

2

여기에 작은 따옴표가 필요하지 않습니다. pyodbc 모듈은 모든 인용문을 처리합니다. 단순히 적절한 자리 표시 자 (?)를 사용하고 두 번째 인수로 매개 변수의 튜플을 .execute()에 전달하십시오. 예를 들면 : 당신이 대신 쿼리를 형성하기 위해 문자열 보간을 사용하는 경우

코멘트에서 언급 한 바와 같이
import pyodbc 
cnxn = pyodbc.connect('your connection string') 
cursor = cnxn.cursor() 
cursor.execute("""INSERT INTO New_Table(SL, ID, text) 
        VALUES (?,?,?);""", (A[i][0], A[i][1], A[i][2])) 
cursor.close() 
cnxn.close() 

, 당신은 SQL-Injection 공격에 응용 프로그램을 엽니 다.

+0

감사합니다 베르니 ... 나는 cursor.execute (sql)과 동일한 작업을 수행했습니다. 내가 모르는 것은 큰 따옴표를 세 번 사용하는 것입니다. 고마워 어쨌든 – user2437648

+0

오, 삼중 따옴표는 여러 줄 문자열입니다. 천만에요. – bernie