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

时间:2016-03-07 18:18:38

标签: python mysql select

我正在尝试从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 cluase中尝试了类似的方式,它工作正常。

任何帮助都将不胜感激! 谢谢!

2 个答案:

答案 0 :(得分:2)

你有conn对象的问题。

' NoneType'对象没有属性'光标'表示conn为None,可能是因为它在__ init __调用期间未建立。

答案 1 :(得分:0)

您无法动态地将对象名称(此处您尝试绑定表名称)或语法结构动态绑定到查询。如果您希望有这样的行为,则必须使用字符串操作,这意味着您将丧失准备语句提供的所有安全优势:

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