python - 尝试使用 SQLite 数据库和 Python 按顺序为每个项目创建记录
问题描述
我相信我需要将 sql 语句扩展为我拥有的当前语句:
SELECT OrderID FROM Orders WHERE UserID = (?)
以后有多个订单的用户很可能会出问题。有没有一种方法可以组合选择和使用订单表中的自动递增 orderID?
而我目前拥有的python是这样的,但是我觉得它可能必须完全重写。
results[0][0]
是用户表中当前用户的 ID
elif userinput == "5":
basket = []
print(pd.read_sql_query('SELECT * FROM Products', conn))
shopping = True
while shopping:
itemToAdd = input("Please enter the ID of the item to add to the basket: ")
basket.append(itemToAdd)
print(basket)
continueShop = input("Continue shopping?(y/n): ")
if continueShop == "n":
conn.execute("INSERT INTO Orders (UserID) VALUES (?)", (results[0][0],))
conn.commit()
counter = 0
for items in basket:
createOrderItems = "INSERT INTO OrderItems (OrderID, ProductID) VALUES (?,?)"
currentOrder = ("SELECT OrderID FROM Orders WHERE UserID = (?) ", (results[0][0]))
conn.execute(createOrderItems, (currentOrder[0], basket[counter]))
counter = +1
conn.commit()
因为数据库是使用 DB Browser 应用程序构建的,所以我真的不知道如何访问我需要确保选择正确记录的部分。任何帮助表示赞赏,谢谢。
此外,由于每个表的主键都是自动递增的,我需要一种方法来仅选择刚刚创建的记录使用
conn.execute("INSERT INTO Orders (UserID) VALUES (?)",
但是,即使订单表中的记录是唯一的,我也想不出一种方法,因为据我所知,无法知道哪个订单是需要查看的订单
解决方案
您可以使用游标对象的lastrowid
属性来查找插入订单的 id。然后在 select 语句中使用复合 WHERE(即 WHERE userid = something 和 orderid = something_else)。
推荐阅读
- css - 我无法编辑的 webtools 中的样式定义
- android - 启用和禁用在屏幕上不可见的 Listview 子项
- jquery - 使用 jquery 删除 reg ex 数据注释
- javascript - 分配给未在本机反应中执行的属性的函数()
- email - 更改 WooCommerce 发票订单邮件收件人
- node.js - 如何验证与正则表达式不匹配的路由 - EXPRESS
- concurrency - 从页面锁定的主机内存到设备内存的 cudaMemcpyAsync 返回读取访问冲突错误
- python - 如何在二维数组中正确存储类对象
- typescript - 钩子中数组的状态数据类型,继续初始化
- javascript - 使用 js 在选择时获取所选项目