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
我正在使用 Python3 和 PyMySQL 0.7.9
。 Mysql 的版本是 5.5.57
.
使用此查询从 Mysql 获取数据有效:
cur.execute('SELECT date FROM Tablename1 ORDER BY id DESC LIMIT 1')
我想从变量中获取 table 的名称。
阅读 Pymysql 文档和
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