国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python 批量生成唯一優惠券碼(供php調用)

objc94 / 1296人閱讀

摘要:批量生成優惠券碼并寫入數據表說明這篇文章主要講的是個人工作中遇到的解決問題的方法而非程序寫的多優美。

python 批量生成優惠券碼并寫入數據表 說明:這篇文章主要講的是個人工作中遇到的解決問題的方法,而非程序寫的多優美。要完善的地方太多了,大家嘴下留情 why do this 為什么要這么做?優惠券碼直接在用的時候用程序直接生成不就OK了嗎? 好,那么問題來了,我們的系統需要一次性發送幾十萬張優惠券,怎么破。這里引來這個問題(php編寫的web程序)
1.通過php函數來生成幾十萬個優惠券碼,然后分批次比如每次1000插入到數據表中,主要考慮到這幾十萬的碼會占用大量內存,而且php執行時間也會過長,雖然可以設置超時時間,但總歸不是better的解決方案
2.現有各個系統中都存在自己優惠券碼的生成規則,但是數據表卻是同一張,有了這個優惠碼池,各個系統就無需再自己生成優惠碼,而是直接要用多少讀取多少即可。 引申出優惠券碼池表(保證code值唯一) 數據表結構
CREATE TABLE `prefix_coupon_pool` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "自增ID",
  `code` varchar(32) NOT NULL COMMENT "優惠券碼 唯一性約束",
  `is_assigned` tinyint(1) DEFAULT "0" COMMENT "0:未分配 1:已分配",
  `created_at` int(10) unsigned DEFAULT "0" COMMENT "生成時間",
  PRIMARY KEY (`id`),
  UNIQUE KEY `index_code` (`code`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
python 代碼說明 1.安裝python-dotenv用來獲取.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
調用方法 ./pymakecoupon.py pp 6 10000

pp:優惠券前綴

6:優惠券長度

10000:生成個數

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 "參數錯誤,調用方式為:./pymakecoupon.py p10 6 100"
        exit()
    try:
        prefix = args[1]
        length = int(args[2])
        count = int(args[3])
    except IndexError as e:
        print "參數錯誤"

    msg = "將生成前綴為:%s,優惠券長度為:%s,總共%s個優惠券碼"
    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



文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37925.html

相關文章

  • python 批量生成唯一惠券(php調用)

    摘要:批量生成優惠券碼并寫入數據表說明這篇文章主要講的是個人工作中遇到的解決問題的方法而非程序寫的多優美。 python 批量生成優惠券碼并寫入數據表 說明:這篇文章主要講的是個人工作中遇到的解決問題的方法,而非程序寫的多優美。要完善的地方太多了,大家嘴下留情 why do this 為什么要這么做?優惠券碼直接在用的時候用程序直接生成不就OK了嗎? 好,那么問題來了,我們的系統需要一次性發...

    Jeff 評論0 收藏0
  • 淺析微信支付:商戶平臺代金券或立減優惠開通、指定用戶代金券發放、查詢等

    摘要:本文是淺析微信支付系列文章的第十四篇,主要講解在如何開通商戶平臺的代金券或立減優惠功能,商家向指定用戶發送代金券,查詢發送記錄,代金券信息等。代金券微信支付代金券業務是基于微信支付,為了協助商戶方便地實現營銷優惠措施。 本文是【淺析微信支付】系列文章的第十四篇,主要講解在如何開通商戶平臺的代金券或立減優惠功能,商家向指定用戶發送代金券,查詢發送記錄,代金券信息等。 淺析微信支付系列已...

    neroneroffy 評論0 收藏0
  • 淺析微信支付:統一下單接口

    摘要:本文是淺析微信支付系列文章的第五篇,主要講解如何調用統一下單接口生成預支付單及調起支付頁面。淺析微信支付系列已經更新四篇了喲,沒有看過的朋友們可以看一下哦。 本文是【淺析微信支付】系列文章的第五篇,主要講解如何調用統一下單接口生成預支付單及調起支付頁面。 淺析微信支付系列已經更新四篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:微信公眾號網頁授權 淺析微信支付:開發前的準備 ...

    ytwman 評論0 收藏0
  • PHP圖片處理之二維加文字

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

    justjavac 評論0 收藏0
  • 阿里云平臺發送短信

    摘要:獲取阿里云訪問密鑰為了使用短信發送,您必須申請阿里云的訪問密鑰。國際港澳臺消息只能使用國際港澳臺短信模版發送短信。 1.獲取阿里云訪問密鑰 為了使用短信發送API-Python SDK,您必須申請阿里云的訪問密鑰。 阿里云訪問秘鑰是阿里云為用戶使用 API(非控制臺)來訪問其云資源設計的安全口令。您可以用它來簽名 API 請求內容以通過服務端的安全驗證。 該訪問秘鑰成對(AccessK...

    CODING 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<