【问题标题】:Mysqldb AttributeError: cursorMysqldb AttributeError:游标
【发布时间】:2011-04-22 13:19:12
【问题描述】:

我开始在 python 中使用 mysqldb 模块,我似乎对调用查询的“标准”方式有一些问题。

我知道标准的方法是创建一个游标,然后用它来执行查询。

但是,当我尝试实例化一个时,它给了我以下错误:

属性错误:光标

我的数据库类看起来像:

class Database():

    def __init__(self):
        server = "localhost"
        login = "login"
        password = "passws"
        database = "DB"
        my_conv = { FIELD_TYPE.LONG: int }

        self.conn = MySQLdb.connection(user=login, passwd=password, db=database, host=server, conv=my_conv)
        self.cursor = self.conn.cursor()

    def close(self):
        self.conn.close()

    def execute(self, query):
        self.cursor.execute(query)
        return self.cursor.fetchall()

目前我使用查询方法可以正常工作,但我觉得不使用标准会在将来给我带来麻烦。

有什么想法吗?

【问题讨论】:

  • 回溯只是给了我 AttributeError。以及以下警告:D:\ProgramFiles\Python26\lib\site-packages\MySQLdb\__init__.py:34: DeprecationWarning: the sets module is deprecated from sets import ImmutableSet

标签: python mysql mysql-python


【解决方案1】:

你使用了错误的连接构造函数。

MySQLdb.Connection 而不是 MySQLdb.connection 应该可以工作。

【讨论】:

  • 只是不同的 MySQLdb 对象。
  • 实际上,当我尝试执行插入查询时,我遇到了问题。我可以毫无困难地创建我的数据库,但插入似乎不起作用。它没有给我任何错误,它什么也没做。我使用的代码是:format_query = "INSERT INTO Format (form_name, form_width, form_height, form_fps) VALUES ('"+name+"',"+str(width)+","+str(height)+","+str(fps)+");" db.execute(format_query) 带有前面描述的“执行”功能
  • @Johanna 试试 cursor.execute('COMMIT')
  • 在这里找到答案link。需要提交。
  • 我刚刚遇到了这个问题,不得不花一些时间弄清楚到底发生了什么。我是唯一一个觉得这是一个非常奇怪的设计决定的人吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 2014-09-15
  • 2012-08-09
相关资源
最近更新 更多