错误:游标“对象有没有属性” _last_executed(Error: Cursor' o

2019-09-23 08:47发布

我有这个光标

cursor.execute("SELECT price FROM Items WHERE itemID = ( 
                  SELECT item_id FROM Purchases 
                  WHERE purchaseID = %d AND customer_id = %d)", 
                  [self.purchaseID, self.customer])

我得到这个错误

'Cursor' object has no attribute '_last_executed'

但是,当我试试这个:

cursor.execute("SELECT price FROM Items WHERE itemID = ( 
                  SELECT item_id FROM Purchases 
                  WHERE purchaseID = 1 AND customer_id = 1)", 
                  )

没有错误。 我该如何解决?

Answer 1:

我遇到这个问题了。 我的%d更改为%S,并就解决了。 希望这是对你有用。



Answer 2:

问题是,你是不是在你的选择的字符串进行替换正常。 从文档:

def execute(self, query, args=None):

    """Execute a query.

    query -- string, query to execute on server
    args -- optional sequence or mapping, parameters to use with query.

    Note: If args is a sequence, then %s must be used as the
    parameter placeholder in the query. If a mapping is used,
    %(key)s must be used as the placeholder.

    Returns long integer rows affected, if any

    """

所以,它应该是:

cursor.execute("SELECT price FROM Items WHERE itemID = ( 
              SELECT item_id FROM Purchases 
              WHERE purchaseID = ? AND customer_id = ?)", 
              (self.purchaseID, self.customer))


Answer 3:

原因是,你正在使用“%d”。 当您在SQL中使用“%”,则执行会解释“%”作为格式。 你应该写你的说法是这样的:

cursor.execute("SELECT price FROM Items WHERE itemID = ( 
                SELECT item_id FROM Purchases 
                WHERE purchaseID = %%d AND customer_id = %%d)", 
                [self.purchaseID, self.customer])


Answer 4:

工作对我来说使用双%%

  "SELECT  title, address from table t1, table t2 on t1.id=t2.id where t1.title like '%%Brink%%' "


文章来源: Error: Cursor' object has no attribute '_last_executed