2017-10-13 8 views
1

이름을 제공하는 변수에 의존하는 테이블을 만들거나 선택하려고 할 때 문제가 발생했습니다.Pyodbc : 문자열/변수 이름을 가진 테이블에서 선택하는 방법

예를 들어, 'Hey'= 'j'변수를 통해 선택하려고하는 테이블의 이름 (데이터베이스에 있음)이 작동하지 않는 코드의 예입니다.

j = 'Hey' 
rows = conn.execute("SELECT * from ?", (j,)).fetchall() 
print(rows) 

누구에게도 해결책이 있습니까? 미리 감사드립니다.

답변

0

?은 바인딩 된 매개 변수를 의미하며 불행히도 테이블 이름은 이러한 방식으로 작동하지 않습니다. 당신은 단지 T-SQL에 다운 스트림 문제를 전달하는 등, 하나 불행하게도

j = 'Hey' 
rows = conn.execute("SELECT * from {table_name}".format(table_name=j)).fetchall() 
print(rows) 

, 당신이이 T-SQL 변수 이름에 바인딩 할 수 없습니다 : 그러나,이 의지는 있지만, SQL 주입의주의 EXEC 명령은 다음과 같습니다. Table name as variable 또한 이것은 pyodbc이 아닌 SQL Server 및 T-SQL의 설계 때문입니다.

행운을 빈다.