我正在尝试从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中尝试了类似的方式,它工作正常。
任何帮助都将不胜感激! 谢谢!
答案 0 :(得分:2)
你有conn对象的问题。
' NoneType'对象没有属性'光标'表示conn为None,可能是因为它在__ init __调用期间未建立。
答案 1 :(得分:0)
您无法动态地将对象名称(此处您尝试绑定表名称)或语法结构动态绑定到查询。如果您希望有这样的行为,则必须使用字符串操作,这意味着您将丧失准备语句提供的所有安全优势:
query = ("SELECT * FROM %s" % table_name)
try:
cursor.execute(query, ())