Python MySQLdb 执行表变量

标签 python mysql-python

我正在尝试使用变量作为表名。我收到错误“...在第 1 行的 ''myTable'' 附近 我绝不能逃避这个权利。错误中的双“”似乎是一个线索,但我不明白。

db = MySQLdb.connect("localhost","user","pw","database" )
table = "myTable"
def geno_order(db, table):
    cursor = db.cursor() # prepare a cursor object using cursor() method
    sql = "SELECT * FROM %s"
    cursor.execute(sql, table)
    results = cursor.fetchall()

最佳答案

您不能在 execute 调用中使用表名称参数。为此,您需要使用普通的 Python 字符串插值:

sql = "SELECT * FROM %s" % table
cursor.execute(sql)

当然,如果表名来自用户输入,您需要格外小心。为了缓解 SQL 注入(inject),请根据有效名称列表验证表名称。

关于Python MySQLdb 执行表变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59543291/

相关文章:

python - 将 MySQLdb Python 模块与 mysql_old_password 一起使用

创建二维 numpy 数组的 Pythonic 方式

python - 未知类型错误 : 'numpy.ndarray' object is not callable

python - 如何在pycharm中安装和配置httplib2?

Mysql 无法创建/写入文件错误#13

python - 如何检查 MySQL 连接是否在 Python 中打开?

Python/GCP 健全性检查 : is this correct means of referencing image stored in GCP Storage in a POST call

python - pip install urllib3 卡在 "Caching due to etag"

MySQLdb 无法连接到 MySQL : raise errorclass, 错误值

python - mysql-python mac OSX 10.10 禁用安全身份验证