查询油站油价信息,根据油站的信息推算不同优惠金额的折扣方式或其他优惠方式,以及带来的利润
根据订单表现,推算目前优惠力度是否合理
首先第一步,连接数据库并查询基础数据 引用pymysql 利用pymysql.connect 创建连接,连接数据库,需要参数(host/user/password/database),database非必须 自定义函数或变量定义连接
import pymysql
conn_price = pymysql.connect(
host='rr-test',
user='abc',
password="123"
)
cur_price = conn_price.cursor() /*利用连接创建游标,后续的操作在游标上进行*/
cur_price.execute(
'select gas_id,gas_name,sku_id,gun_price,settlement_price,visitor_price from price where yn=1'
) /*利用游标执行SQL查询*/
a = cur_price.fetchone()/*获取查询的数据,此处的数据来源于游标中执行的SQL*/
print(a)
测试完毕,数据连接成功,基础字段获取完成;
第二步,获取数据后分析处理
import numpy as np
gun_price = 7.3
vis_price = 6.16
def price_fun(gun_price,vis_price):
for m in np.arange(0.5,0.9,0.1):
for p in np.arange(0,0.02,0.005):
n =((((vis_price *(200 / gun_price))*(1+p) ) - (10 * gun_price * m) ) / ( (200 / gun_price) - 10 )) - gun_price
print("折扣是:{0},利润率为:{1},加{2}".format(m,p,round(n,4)))
res = price_fun(gun_price,vis_price)
print(res)
结合以上两步:
import pymysql
import numpy as np
# 连接数据库
conn_price = pymysql.connect(
host='---',
user='---',
password="---"
)
# 创建游标
cur_price = conn_price.cursor()
# 创建游标内SQL查询内容
cur_price.execute(
'''select gas_id,gas_name,sku_id,gun_price,settlement_price,visitor_price from czb_price_rule.price where yn=1'''
)
# 获取数据
data_price = cur_price.fetchall()
m1 = float(input(("折扣最低为:")))
m2 = float(input(("折扣最高为:")))
m3 = float(input(("折扣计算步长为:")))
p1 = float(input(("利润率最低为:")))
p2 = float(input(("利润率最高为:")))
p3 = float(input(("利润率计算步长为:")))
# 定义计算函数
def price_fun(v,g):
for m in np.arange(m1,m2,m3):
for p in np.arange(p1,p2,p3):
n =((((vis_price *(200 / gun_price))*(1+p) ) - (10 * gun_price * m) ) / ( (200 / gun_price) - 10 )) - gun_price
pro = 1 - (((( (200/gun_price)-10) * (gun_price + n)) + (10 * gun_price * m) ) / 200)
rebate = 1 - (vis_price/gun_price)
print("当前让利为{4},当折扣是:{0},利润率为:{1}的情况下,枪价加{2},用户优惠百分之{3},".format(round(m,1), p, round(n, 4),round(pro,2),round(rebate,2)))
# 循环取出每个油站枪价,访客价信息
for o in range(len(data_price)):
gas_name = str(data_price[o][1])
vis_price = float(data_price[o][5])
gun_price = float(data_price[o][3])
print("油站是:{0}".format(gas_name))
res = price_fun(vis_price,gun_price)
以上可以自定义折扣与利润的关系自动计算结果并遍历打印,下一步研究根据订单变化推算当前最优解。