mysql+python随机插入订单+订单商品

实现以下功能:
订单数量参数化
订单商品随机
商品价格随机
商品数量随机
小计=价格*数量
订单总计=商品小计之和

import random
import time

import pymysql


def sqlSelect(needwhat, goodno=None):
    order_num = time.strftime("%Y%m%d%H", time.gmtime()) + str(int(time.time()))
    print('订单号等于==========', order_num)
    global result_sku
    db = pymysql.Connect(
        host='123.145.123.145',
        port=3306,
        user='yun',
        password='yun123456',
        db='test',
        charset='utf8'
    )
    cur = db.cursor()
    if needwhat == 'goods_sn':
        result_sku = ()
        # 如果元祖为空就一直循环查询
        # order by rand() sql随机取值
        while not result_sku:
            sql = 'SELECT a.goods_sn'
            cur.execute(sql)
            result_sku = cur.fetchall()
    elif needwhat == 'order_sn':
        # 如果查询结果为null,那么返回none
        sql = "select IFNULL(min(id), 'none') from order a where a.order_sn=%s"
        cur.execute(sql, order_num)
        result_sku = cur.fetchall()
        print("order_sn======", result_sku, type(result_sku))
    elif needwhat == 'insert_order':
        dataset=DataCenterCreate()
        # 插入订单
        sql = "INSERT INTO `test`.`order`(`order_sn`, `order_amount`) VALUES ( %(order_num)s, %(order_amount)s)"
        values = {"order_amount": dataset[len(dataset) - 1]["order_amount"], "order_num": order_num}
        cur.execute(sql, values)
        db.commit()
        # 插入订单商品
        for data in dataset:
            sql = "INSERT INTO `test`.`order_goods`(`order_id`, `goods_id`, `goods_name`, `product_code`, `num`, `price`, `subtotal`, `create_time`, `update_time`) select id,tmp.goods_id,tmp.goods_name,tmp.productcode,%(number)s, %(price)s, %(subtotal)s, NOW(), NOW() from order a,(select goods_id,goods_name,productcode from goods order by rand() limit 1)tmp  where a.order_sn =%(order_num)s"
            values = {"subtotal": data["subtotal"], "price": data["price"], "number": data["number"], "order_num": order_num}
            cur.execute(sql, values)
            db.commit()
            result_sku = cur.fetchall()
            print("insert_order======", result_sku)
    cur.close()
    db.close()
    return result_sku


# 以字典的形式返回订单计算商品信息,order_amount只有最
def DataCenterCreate():
    i = 0
    dataall = []
    order_amount = 0
    while i < random.randint(2, 5):
        price = round(random.uniform(1, 10), 2)
        print("price=====", price)
        number = random.randint(1, 10)
        print("number=====", number)
        subtotal = round(price * number, 2)
        print("subtotal=====", subtotal)
        order_amount = round((order_amount + subtotal), 2)
        dataall.append({"price": price, "number": number, "subtotal": subtotal, "order_amount": order_amount})
        i += 1
    print("dataall====", dataall)
    print("dataall最大值====", dataall[len(dataall) - 1]["order_amount"])
    return dataall


def InsertOrder(num):
    i = 0
    while i < num:
        minn = False
        while minn == False:
            code = sqlSelect('order_sn')[0][0]
            print("code=======", code)
            if code == 'none':
                resultorder = sqlSelect('insert_order')
                print("result", resultorder)
                minn = True
        i += 1


InsertOrder(5)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值