2017-09-06 3 views
1

Python3 및 PyMySQL 0.7.9을 사용하고 있습니다. MySQL 버전은 5.5.57입니다. MySQL의 데이터를 가져 오기 위해이 쿼리를 사용하여변수의 Pymysql 테이블 이름

작동합니다

cur.execute('SELECT date FROM Tablename1 ORDER BY id DESC LIMIT 1') 

내가 변수에서 테이블의 이름을 좀하고 싶습니다. 읽기 Pymysql 워드 프로세서 및 this 유래 게시물이 코드가 작동한다는 것을 보라 나를 인도 :

dbtable = Tablename1 
query = 'SELECT date FROM %s ORDER BY id DESC LIMIT 1' 
cur.execute(query, (dbtable,)) 

을하지만이 오류가 발생합니다 :

pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Tablename1' ORDER BY id DESC LIMIT 1' at line 1") 

가 나는 또한 따옴표를 사용하여 시도하지만 서로 다른 오류가 발생했습니다 :

query = 'SELECT `date` FROM `%s` ORDER BY `id` DESC LIMIT 1' 
cur.execute(query, (dbtable,)) 

결과 :

pymysql.err.ProgrammingError: (1146, "Table 'Databasename.'Tablename1'' doesn't exist") 

변수 작업을 허용하기 위해 쿼리를 어떻게 변경해야합니까? 이처럼

+2

코드. 그러면 select가'select * from tablename1''이 될 것입니다. 그런 다음 구문 오류가 발생합니다. 다음과 같이 테이블 이름을 직접 전달하십시오. 'query =' 'ORDER BY id DESC LIMIT 1 ".format (Tablename1)' – Abe

+0

해당 형식으로 쿼리를 만들 수있었습니다. 작업. –

답변

0

: 항상 SQL 문을에``문자를 통과

dbtable = input("Table name: ") 
query = "SELECT * FROM %s"%(dbtable) 
cur.execute(query) 

results = cur.fetchall() 

for row in results: 
print (row[0], row[1], row[2], row[3])