结果返回'NoneType'对象在我连接db时没有属性'execute'

时间:2016-03-19 16:50:07

标签: python python-2.7 pymysql

但是我尝试使用python代码访问数据库连接 我遇到python数据库连接问题。 这是我的代码,我正在使用python版本2.7.10。

import pymysql

class SqlManager:
    def __init__(self):
        self.conn = None
        self.cursor = None
        self.host = "127.0.0.1"
        self.port = 3306
        self.user = "user"
        self.passwd = "pw"
        self.db_name = "db"

    def connect(self):
        self.conn = pymysql.connect(
            host=self.host, port=self.port, user=self.user,    passwd=self.passwd, db=self.db_name)
        self.cursor = self.conn.cursor(pymysql.cursors.DictCursor)
        self.conn.autocommit(True)
        return True

    def description(self):
        cur = self.cursor.execute("SELECT * FROM user")
        for row in cur:
            print(row)

实际上我猜我得到了Nonetype的属性错误,也许连接在init部分声明为None,但是我在连接部分做了连接,所以我认为它会起作用,但我不是。

请建议我需要修复的内容或更好的使用方法。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在你的构造函数中,

self.cursor = None

然后在description方法中执行此操作而不初始化属性

cur = self.cursor.execute("SELECT * FROM user")

您可能希望将其更改为

self.conn.cursor.execute("SELECT * FROM user")

当然,您需要在初始化此类后调用connect方法。