Pymysql table 来自变量的名称

Pymysql table name from variable

我正在使用 Python3 和 PyMySQL 0.7.9。 Mysql 的版本是 5.5.57.

使用此查询从 Mysql 获取数据有效:

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

我想从变量中获取 table 的名称。 阅读 Pymysql 文档和 Whosebug post 让我相信这段代码应该有效:

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

应该如何更改查询以允许变量工作?

像这样:

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

这对我有用。使用 python 3.8、mariadb 10.2、pymysql

cur = con.cursor()
cur.execute('SELECT field FROM %s ORDER BY id DESC LIMIT 1' %(dbtable))
result = cur.fetchone()

适当替换字段和dbtable