2011-04-09 3 views
4

파이썬에서 sqlite3 테이블을 삭제하는 데 문제가 있습니다. 표준 sqlite3 모듈을 사용하고 있습니다.파이썬 sqlite3 매개 변수화 된 드롭 테이블

sql = """ drop table table_name """ 

잘 작동 : 나는 sql에 변경하면

self.conn = sqlite3.connect(...) 

sql = """ drop table ? """ 
self.conn.execute(sql, (u'table_name',)) 

OperationalError: near "?": syntax error

에게 제공합니다.

답변

6

테이블 이름이나 열 이름에 매개 변수를 사용할 수 없습니다.

또는 당신은, 예를 들어 그것을 두 단계 프로세스를 만들 수 :

sql = """ drop table %s """ % a_table_name 
self.conn.execute(sql) 

그리고 당신은 당신이 명시 적으로 테이블이 삭제 될 수 있습니다 지정 할 수 있음을하고 있다면 ...

TABLES_THAT_CAN_BE_DROPPED = ('table_a','table_b',) 
if a_table_name in TABLES_THAT_CAN_BE_DROPPED: 
    sql = """ drop table %s """ % a_table_name 
    self.conn.execute(sql) 
else: 
    pass # handle creatively 
+0

나쁘다. executemany()를 테이블 목록과 함께 사용하고 싶다. 이것이 어떻게 든 실현 될 수 있다면 어떨까요? – pajton

+0

너무 느리게 테이블 이름을 반복하고 있습니까? – bernie

+0

물론 아닙니다. 나는 그저 사물을 최대한 단순하게 만들고 싶어. :). 답변 해주셔서 감사합니다! – pajton

관련 문제