如何使用python变量从web2py中的控制器执行插入命令?

时间:2019-06-29 15:03:13

标签: python sqlite web2py

我使用了一个单击功能来到达控制器中的确认方法,并且我的购物车表中有6个项目,我的问题始于插入命令,由于日期,起初显示很多错误,所以我使用了str以字符串形式获取日期,则没有错误,但是当检查我的数据库时,似乎什么都没有插入。我已经尝试了很多类似db.orders.bulk_insert的变体,但它也没有解决问题。我已经检查了每个变量,看是否是问题所在,但不是。

但是第二条sql命令执行得很好。我找不到任何可以解决类似问题的源代码,请他们使我弄错或错过什么。 我尝试使用调试点,但仍然没有运气

然后经过很多次尝试,我在db.orders页面中得到了回溯错误,这是它的图像“ https://i.stack.imgur.com/uUPXk.png”。但是无论我做什么,都不会消失

这是我的数据库

db.define_table('orders',
                Field('orderid',type = 'integer'),
                Field('order_date'),
                Field('order_time'),
                Field('shop_name'),
                Field('mobile_no',type = 'integer'),
                Field('product_name'),
                Field('case_qty',type = 'integer'),
                Field('pcs_qty',type = 'integer'),
                Field('incre',type = 'integer'),
                Field('anything')
                )
db.define_table('cart',
                Field('product_name'),
                Field('case_qty',type = 'integer'),
                Field('pcs_qty',type = 'integer')
                )
db.define_table('one',
                Field('incre',type = 'integer')
                )

这是我的python代码

def confirm():
    onedict = {}
    inc = db(db.one).select()
    for x in inc:
        onedict[x.id]=x.incre
    cartrows = db(db.cart).select()
    on = onedict[1]
    for x in cartrows:
        product = x.product_name
        case = x.case_qty
        pcs = x.pcs_qty
        date = str(request.now.year)+"-"+str(request.now.month)+"-"+str(request.now.day)
        time = str(request.now.hour)+":"+str(request.now.minute)
        shop = session.shop_name
        mobile = session.mobile_no
        sql1 = ("insert into orders(product_name,case_qty,pcs_qty,order_date,order_time,
        orderid,shop_name,mobile_no)values(?,?,?,?,?,?,?,?)")
        r = db.executesql(sql1,(product,case,pcs,date,time,on,shop,mobile))
    on = on + 1
    sql2 = db(db.one.id == 1).update(incre = on)
    redirect(URL('login'))
    return locals()

0 个答案:

没有答案