繁体   English   中英

Python - 带有动态表名的 MySQL SELECT 查询

[英]Python - MySQL SELECT query with dynamic table name

我正在尝试从 Python 中的 MySQL 数据库中获取所有行。 当表名是可变的时,如何从表中获取所有行?

这是我编写的一个方法,但是在运行它时出现错误。

def get_rows(self, table_name):
    cursor = self.conn.cursor()
    query = ("SELECT * "
              "FROM %s ")
    try:
        cursor.execute(query, (table_name,))
        value = cursor.fetchall()
    finally:
        cursor.close()
    return value

我收到以下错误:

AttributeError: 'NoneType' 对象没有属性 'cursor'

我在WHERE子句中尝试了类似的方法,效果很好。

你的 conn 对象有问题。

'NoneType' 对象没有属性 'cursor' 意味着 conn 是 None,可能是因为它没有在 __ init __ 调用期间建立。

您不能将对象名称(在这里您尝试绑定表名称)或句法结构动态绑定到查询。 如果您希望有这样的行为,您将不得不求助于字符串操作,这意味着您将丧失准备好的语句提供的所有安全优势:

query = ("SELECT * FROM %s" % table_name)
try:
    cursor.execute(query, ())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM