成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

python 批量生成唯一優(yōu)惠券碼(供php調(diào)用)

objc94 / 1361人閱讀

摘要:批量生成優(yōu)惠券碼并寫(xiě)入數(shù)據(jù)表說(shuō)明這篇文章主要講的是個(gè)人工作中遇到的解決問(wèn)題的方法而非程序?qū)懙亩鄡?yōu)美。

python 批量生成優(yōu)惠券碼并寫(xiě)入數(shù)據(jù)表 說(shuō)明:這篇文章主要講的是個(gè)人工作中遇到的解決問(wèn)題的方法,而非程序?qū)懙亩鄡?yōu)美。要完善的地方太多了,大家嘴下留情 why do this 為什么要這么做??jī)?yōu)惠券碼直接在用的時(shí)候用程序直接生成不就OK了嗎? 好,那么問(wèn)題來(lái)了,我們的系統(tǒng)需要一次性發(fā)送幾十萬(wàn)張優(yōu)惠券,怎么破。這里引來(lái)這個(gè)問(wèn)題(php編寫(xiě)的web程序)
1.通過(guò)php函數(shù)來(lái)生成幾十萬(wàn)個(gè)優(yōu)惠券碼,然后分批次比如每次1000插入到數(shù)據(jù)表中,主要考慮到這幾十萬(wàn)的碼會(huì)占用大量?jī)?nèi)存,而且php執(zhí)行時(shí)間也會(huì)過(guò)長(zhǎng),雖然可以設(shè)置超時(shí)時(shí)間,但總歸不是better的解決方案
2.現(xiàn)有各個(gè)系統(tǒng)中都存在自己優(yōu)惠券碼的生成規(guī)則,但是數(shù)據(jù)表卻是同一張,有了這個(gè)優(yōu)惠碼池,各個(gè)系統(tǒng)就無(wú)需再自己生成優(yōu)惠碼,而是直接要用多少讀取多少即可。 引申出優(yōu)惠券碼池表(保證code值唯一) 數(shù)據(jù)表結(jié)構(gòu)
CREATE TABLE `prefix_coupon_pool` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "自增ID",
  `code` varchar(32) NOT NULL COMMENT "優(yōu)惠券碼 唯一性約束",
  `is_assigned` tinyint(1) DEFAULT "0" COMMENT "0:未分配 1:已分配",
  `created_at` int(10) unsigned DEFAULT "0" COMMENT "生成時(shí)間",
  PRIMARY KEY (`id`),
  UNIQUE KEY `index_code` (`code`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
python 代碼說(shuō)明 1.安裝python-dotenv用來(lái)獲取.env配置

git:https://github.com/theskumar/python-dotenv

2.建立.env文件
  DB_HOST=localhost
  DB_DATABASE=test
  DB_USERNAME=root
  DB_PASSWORD=root
  DB_PORT=3306
調(diào)用方法 ./pymakecoupon.py pp 6 10000

pp:優(yōu)惠券前綴

6:優(yōu)惠券長(zhǎng)度

10000:生成個(gè)數(shù)

python源碼如下
#!/usr/bin/env python
#coding:utf-8

import random
import string
from os.path import join, dirname
from dotenv import load_dotenv
from mysql import connector
import mysql
import os
import time
import sys


originCode = string.ascii_lowercase
failedRecord = 0

def getConnection():
    dotenv_path = join(dirname(__file__), ".env")
    print dotenv_path
    load_dotenv(dotenv_path)
    host = os.environ.get("DB_HOST")
    user = os.environ.get("DB_USERNAME")
    password = os.environ.get("DB_PASSWORD")
    database = os.environ.get("DB_DATABASE")
    port = os.environ.get("DB_PORT")
    try:
        connect = connector.connect(host=host, user=user, password=password, database=database, port=port)
        return connect
    except mysql.connector.Error as e:
        print e
        return False
    except Exception as e:
        return False

def makeCouponCode(prefix="p", length = 6):
    str = prefix
    if length == 0:
        pass
    for index in range(length):
        str += random.choice(originCode)
    return str

if __name__ == "__main__":
    args = sys.argv
    codeList = []
    if len(args) != 4:
        print "參數(shù)錯(cuò)誤,調(diào)用方式為:./pymakecoupon.py p10 6 100"
        exit()
    try:
        prefix = args[1]
        length = int(args[2])
        count = int(args[3])
    except IndexError as e:
        print "參數(shù)錯(cuò)誤"

    msg = "將生成前綴為:%s,優(yōu)惠券長(zhǎng)度為:%s,總共%s個(gè)優(yōu)惠券碼"
    msg = msg % (prefix, length, count)
    print msg
    inputPrompt = raw_input("y/n
")
    if inputPrompt == "y":
        pass
    else:
        print "bye"
        exit

    connect = getConnection()
    if connect == False:
        sys.exit(0)
    cursor = connect.cursor()
    codeString = ""
    now = int(time.time())
    for index in range(1,count+1):
        pass
        code = makeCouponCode(prefix,length)
        codeTemplate = "("%s",%s)"
        code = codeTemplate % (code,now)
        codeList.append(code)
        print code
        if index % 1000 == 0:
            codeString = ",".join(codeList)
            sql = "INSERT IGNORE INTO prefix_coupon_pool(code,created_at)VALUES %s"
            sql = sql % (codeString)
            cursor.execute(sql)
            connect.commit()
    connect.close



文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/37925.html

相關(guān)文章

  • python 批量生成唯一優(yōu)惠券(php調(diào)用)

    摘要:批量生成優(yōu)惠券碼并寫(xiě)入數(shù)據(jù)表說(shuō)明這篇文章主要講的是個(gè)人工作中遇到的解決問(wèn)題的方法而非程序?qū)懙亩鄡?yōu)美。 python 批量生成優(yōu)惠券碼并寫(xiě)入數(shù)據(jù)表 說(shuō)明:這篇文章主要講的是個(gè)人工作中遇到的解決問(wèn)題的方法,而非程序?qū)懙亩鄡?yōu)美。要完善的地方太多了,大家嘴下留情 why do this 為什么要這么做??jī)?yōu)惠券碼直接在用的時(shí)候用程序直接生成不就OK了嗎? 好,那么問(wèn)題來(lái)了,我們的系統(tǒng)需要一次性發(fā)...

    Jeff 評(píng)論0 收藏0
  • 淺析微信支付:商戶平臺(tái)代金券或立減優(yōu)惠開(kāi)通、指定用戶代金券發(fā)放、查詢等

    摘要:本文是淺析微信支付系列文章的第十四篇,主要講解在如何開(kāi)通商戶平臺(tái)的代金券或立減優(yōu)惠功能,商家向指定用戶發(fā)送代金券,查詢發(fā)送記錄,代金券信息等。代金券微信支付代金券業(yè)務(wù)是基于微信支付,為了協(xié)助商戶方便地實(shí)現(xiàn)營(yíng)銷優(yōu)惠措施。 本文是【淺析微信支付】系列文章的第十四篇,主要講解在如何開(kāi)通商戶平臺(tái)的代金券或立減優(yōu)惠功能,商家向指定用戶發(fā)送代金券,查詢發(fā)送記錄,代金券信息等。 淺析微信支付系列已...

    neroneroffy 評(píng)論0 收藏0
  • 淺析微信支付:統(tǒng)一下單接口

    摘要:本文是淺析微信支付系列文章的第五篇,主要講解如何調(diào)用統(tǒng)一下單接口生成預(yù)支付單及調(diào)起支付頁(yè)面。淺析微信支付系列已經(jīng)更新四篇了喲,沒(méi)有看過(guò)的朋友們可以看一下哦。 本文是【淺析微信支付】系列文章的第五篇,主要講解如何調(diào)用統(tǒng)一下單接口生成預(yù)支付單及調(diào)起支付頁(yè)面。 淺析微信支付系列已經(jīng)更新四篇了喲~,沒(méi)有看過(guò)的朋友們可以看一下哦。 淺析微信支付:微信公眾號(hào)網(wǎng)頁(yè)授權(quán) 淺析微信支付:開(kāi)發(fā)前的準(zhǔn)備 ...

    ytwman 評(píng)論0 收藏0
  • PHP圖片處理之二維加文字

    摘要:分析將鏈接生成二維碼不難,直接即可解決。打開(kāi)圖片將生成的二維碼圖片按照路徑打開(kāi),獲取相關(guān)信息。銷毀圖片銷毀生成的圖片資源和生成的圖片文件。 需求 客戶商品管理系統(tǒng),每個(gè)商品需要生成一個(gè)二維碼以便手機(jī)直接掃描查看商品信息,而對(duì)應(yīng)的,二維碼下方必須有一串唯一碼,它們存在于一張圖片上,以方便用戶另存打印貼紙(不相干細(xì)節(jié)省略)。 分析 將鏈接生成二維碼不難,直接qrcode即可解決。 剩下的對(duì)...

    justjavac 評(píng)論0 收藏0
  • 阿里云平臺(tái)發(fā)送短信

    摘要:獲取阿里云訪問(wèn)密鑰為了使用短信發(fā)送,您必須申請(qǐng)阿里云的訪問(wèn)密鑰。國(guó)際港澳臺(tái)消息只能使用國(guó)際港澳臺(tái)短信模版發(fā)送短信。 1.獲取阿里云訪問(wèn)密鑰 為了使用短信發(fā)送API-Python SDK,您必須申請(qǐng)阿里云的訪問(wèn)密鑰。 阿里云訪問(wèn)秘鑰是阿里云為用戶使用 API(非控制臺(tái))來(lái)訪問(wèn)其云資源設(shè)計(jì)的安全口令。您可以用它來(lái)簽名 API 請(qǐng)求內(nèi)容以通過(guò)服務(wù)端的安全驗(yàn)證。 該訪問(wèn)秘鑰成對(duì)(AccessK...

    CODING 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<