2017-09-06 8 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 StackOverflowのポストこのコードが動作する必要があることを信じて私をリード:

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") 

私も引用符を使用してみましたが、別のエラーを得た:

pymysql.err.ProgrammingError: (1146, "Table 'Databasename.'Tablename1'' doesn't exist") 
01:中
query = 'SELECT `date` FROM `%s` ORDER BY `id` DESC LIMIT 1' 
cur.execute(query, (dbtable,)) 

結果

変数の作業を許可するためにクエリをどのように変更する必要がありますか?このよう

+2

あなたのコード。 したがって、選択は '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]) 
関連する問題