2017-02-16 3 views
0

PyMySQL을 Python 2.7에서 사용하고 있습니다. 함수를 만들어야합니다. 테이블 이름이 주어지면 쿼리는 모든 열 이름의 고유 값을 찾습니다.PyMySQL에서 테이블 이름에 변수를 할당합니다.

두 개 이상의 테이블이 관련되어 있으므로 테이블 이름을 하드 코딩하지 않으려 고합니다.

ProgrammingError: (1146, u"Table 'Table_1.tab' doesn't exist") 

사람이 도와주세요 수 :

tab = 'Table_1' 
cursor.execute(" SELECT DISTINCT(`Trend`) AS `Trend` FROM tab ORDER BY `Trend` DESC  ") 

나는 다음과 같은 오류가 점점 오전 : 나는 그런 짓을 할

cursor.execute(" SELECT DISTINCT(`Trend`) AS `Trend` FROM `Table_1` ORDER BY `Trend` DESC  ") 

:처럼 이제 간단한 쿼리이다. TIA

답변

0

사용하시는 데이터베이스이 정확한지 확인하고 %s을 사용하여 SQL 문 형식을 지정하십시오.

DB_SCHEMA='test_db' 
table_name='table1' 
connection = pymysql.connect(host=DB_SERVER_IP, 
          port=3306, 
          db=DB_SCHEMA, 
          charset='UTF8', 
          cursorclass=pymysql.cursors.DictCursor 
          ) 
try: 
    with connection.cursor() as cursor: 
     sql = "SELECT DISTINCT(`Trend`) AS `Trend` FROM `%s` ORDER BY `Trend` DESC"%(table_name) 

     cursor.execute(sql) 

    connection.commit() 
except Exception as e: 
    print e 
finally: 
    connection.close() 

희망이 도움이됩니다.

+0

안녕하세요. 그것은 효과가 있었다. – chhibbz

+0

필요한 경우 테이블 이름을 이스케이프 처리하지 않습니다. pymysql 이스케이프 기능을 전혀 사용하지 않고 단지 파이썬 문자열 형식을 사용합니다. –

관련 문제