"TypeError: NoneType is not subscriptable" when executing multiple queries
"TypeError: NoneType is not subscriptable" when executing multiple queries
检索数据库的成员函数。
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
returns 从数据库查询中列出的成员函数
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')
为此奋斗了好几个小时。在 google 上搜索。在这里阅读问题。
如有任何帮助,我们将不胜感激。
错误
'NoneType' object is not subscriptable
表示您正在尝试访问不存在的对象的对象键,即该对象是 None
.
请在此处检查
[invid]
invid
不是None,即打印(invid)
此外,问题可能出在这里
res['invName']
res
是None
,请在访问invName
之前检查res
的内容(打印等),因为它是None
。
修复订单产品列表的连接、项目实例和 img。
库存和订单商品
create table inventory(invId integer PRIMARY KEY AUTOINCREMENT NOT NULL, invName varchar(50), description varchar(100), invImg varchar(50) ,category integer ,quantity integer, price real);
create table ordersList(orderId integer, inventoryId integer, orderQuantity integer, orderPrice real);
class OrderItem(object):
def __init__(self, ordId, invId, img, name, quantity, price):
self.orderId = ordId
self.productId = invId
self.productName = name
self.productImg = img
self.quantity = quantity
self.productPrice = price
def GetOrderItemsList(orderid):
list = []
db = get_db()
cur = db.execute('SELECT orderId, inventoryId, orderQuantity, orderPrice,
inventory.invName AS invName, inventory.invImg AS invImg FROM ordersList INNERJOIN
inventory ON inventory.invId= ordersList.inventoryId WHERE orderId = ?', [orderid])
records = cur.fetchall();
for row in records:
item = OrderItem(row['orderId'], row['inventoryId'],
row['invImg'], row['invName'],
row['orderQuantity'], row['orderPrice'] )
list.append(item)
return list
检索数据库的成员函数。
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
returns 从数据库查询中列出的成员函数
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')
为此奋斗了好几个小时。在 google 上搜索。在这里阅读问题。
如有任何帮助,我们将不胜感激。
错误
'NoneType' object is not subscriptable
表示您正在尝试访问不存在的对象的对象键,即该对象是 None
.
请在此处检查
[invid]
invid
不是None,即打印(invid)
此外,问题可能出在这里
res['invName']
res
是None
,请在访问invName
之前检查res
的内容(打印等),因为它是None
。
修复订单产品列表的连接、项目实例和 img。
库存和订单商品
create table inventory(invId integer PRIMARY KEY AUTOINCREMENT NOT NULL, invName varchar(50), description varchar(100), invImg varchar(50) ,category integer ,quantity integer, price real);
create table ordersList(orderId integer, inventoryId integer, orderQuantity integer, orderPrice real);
class OrderItem(object):
def __init__(self, ordId, invId, img, name, quantity, price):
self.orderId = ordId
self.productId = invId
self.productName = name
self.productImg = img
self.quantity = quantity
self.productPrice = price
def GetOrderItemsList(orderid):
list = []
db = get_db()
cur = db.execute('SELECT orderId, inventoryId, orderQuantity, orderPrice,
inventory.invName AS invName, inventory.invImg AS invImg FROM ordersList INNERJOIN
inventory ON inventory.invId= ordersList.inventoryId WHERE orderId = ?', [orderid])
records = cur.fetchall();
for row in records:
item = OrderItem(row['orderId'], row['inventoryId'],
row['invImg'], row['invName'],
row['orderQuantity'], row['orderPrice'] )
list.append(item)
return list