各位大神好~
最近嘗試使用django架設購物車網站
嘗試將同一筆訂單資料 寫入兩個不同的表單裡面
第一個order 是寫整個訂單的金額 聯絡人等
第二個detail 是寫訂單的詳細資料 商品明和數量等
使用oID作為兩個表單的關聯性
但我將訂單送出時,卻都只會寫入一個表單而已
嘗試用兩次將資料分別寫進去
也是失敗 無法寫進去
![https://drive.google.com/file/d/1TpmsY5wJqZb-Vs-2lShMC_yWqylIfEpm/view?usp=sharing]
![https://drive.google.com/file/d/18KHIunr0qmApgW97d6Gxle5jWHwlNhSr/view?usp=sharing]
#建立訂單 寫入order資料庫內
db = pymysql.connect(host="127.0.0.1", user="user",passwd="user12345",database="store")
db.autocommit(1)
cursor = db.cursor()
sql = "insert into orders (subtotal,shipping,grandtotal,customname,customemail,customaddress,customphone,paytype) values ('{}','{}',{},'{}','{}','{}',{},'{}')".\
format(total,60,grandtotal,customname,customemail,customaddress,customphone,paytype)
cursor.execute(sql)
orderid = cursor.lastrowid #讀取最新資料的自動產生id
db.commit() #寫入order資料庫內
db.close() #關閉資料庫
for unit in cartlist: #將購買商品寫入資料庫
db1 = pymysql.connect(host="127.0.0.1", user="user",passwd="user12345",database="store")
db1.autocommit(1) #參考 https://kknews.cc/zh-tw/code/8ge8zmn.html
total = int(unit[1]) * int(unit[2])
cursor1 = db.cursor()
sql = "insert into detail (oID,dorder,pname,unitprice,quantity,dtotal) values ('{}','{}',{},'{}','{}')".\
format(orderid,unit[0],unit[1],unit[2],total)
cursor1.execute(sql)
db.commit() #寫入dtail資料庫內
db.close() #關閉資料庫
想請問各位大神是我哪邊有遺漏掉嗎? 感謝您~
兩個問題
另外看了你的程式碼,有發現你的兩個 db connection 都是一樣的,如果是這樣的話其實不需要在迴圈裡面再創一個 connection 可以直接使用同一個 db 進型操作,像是這樣
#建立訂單 寫入order資料庫內
db = pymysql.connect(host="127.0.0.1", user="user",passwd="user12345",database="store")
db.autocommit(1)
cursor = db.cursor()
sql = "你的 sql 語法"
cursor.execute(sql)
orderid = cursor.lastrowid #讀取最新資料的自動產生id
db.commit() #寫入order資料庫內
for unit in cartlist: #將購買商品寫入資料庫
total = int(unit[1]) * int(unit[2])
sql = "你的 sql 語法"
cursor.execute(sql)
db.commit() #寫入dtail資料庫內
db.close()
改這樣試試看
#建立訂單 寫入order資料庫內
db=pymysql.connect(host="127.0.0.1",user="user",passwd="user12345",database="store")
db.autocommit(1)
cursor = db.cursor()
sql = "insert into orders (subtotal,shipping,grandtotal,customname,customemail,customaddress,customphone,paytype) values ('{}','{}',{},'{}','{}','{}',{},'{}')".\
format(total,60,grandtotal,customname,customemail,customaddress,customphone,paytype)
cursor.execute(sql)
orderid = cursor.lastrowid #讀取最新資料的自動產生id
db.commit() #寫入order資料庫內
for unit in cartlist: #將購買商品寫入資料庫
total = int(unit[1]) * int(unit[2])
cursor1 = db.cursor()
sql = "insert into detail (oID,dorder,pname,unitprice,quantity,dtotal) values ('{}','{}',{},'{}','{}')".\
format(orderid,unit[0],unit[1],unit[2],total)
cursor1.execute(sql)
db.commit() #寫入dtail資料庫內
db.close() #關閉資料庫