【发布时间】:2021-12-26 11:35:48
【问题描述】:
检索数据库的成员函数。
def GetDb(self):
db = getattr(g, '_database', None)
if db is None:
db = g._database = sqlite3.connect(self.path)
db.row_factory = sqlite3.Row
return db
从数据库查询返回列表的成员函数
def GetOrderItemsList(self, orderid):
list = []
with app.app_context():
db = self.GetDb()
cur = db.execute('SELECT * FROM ordersList WHERE orderId = ?',[orderid])
records = cur.fetchall();
for row in records:
print(row)
invid = row['inventoryId']
OrderItem
OrderItem.orderId = row['orderId']
OrderItem.productId = row['inventoryId']
OrderItem.productName = 'none'
OrderItem.quantity = row['quantity']
OrderItem.productPrice = row['price']
nextcur = db.execute('SELECT * FROM inventory WHERE invId = ?', [invid])
#nextcur = db.execute('SELECT * FROM inventory WHERE invId = 1') #works
res = nextcur.fetchone();
OrderItem.productName = res['invName']
print(res['invName'])
list.append(OrderItem)
return list
订单项:
class OrderItem(object):
def __init__(self, ordId, invId, name, quantity, price):
self.orderId = ordId
self.productId = invId
self.productName = name
self.quantity = quantity
self.productPrice = price
错误信息:
Traceback error OrderItem.productName = res['invName'] TypeError: 'NoneType' object is not subscriptable
错误
nextcur = db.execute('SELECT * FROM inventory WHERE invId = ?', [invid])
作品
nextcur = db.execute('SELECT * FROM inventory WHERE invId = 1')
为此奋斗了好几个小时。在谷歌上搜索。在此处阅读问题。
任何帮助将不胜感激。
【问题讨论】:
-
不,这个问题不应该被删除。其他人可能会遇到与您完全相同的问题。请检查它是哪个原因(“invId off”或“不明确的列名”)并写下您自己的答案来解释问题,您可能会以这种方式帮助某人。在这个网站上回答你自己的问题很好(甚至鼓励)。
-
我很可能对 invId 有疏忽。通过连接简化了这一点,但直到我进入 sql 终端并看到列名错误时才意识到问题出在哪里。