1. 程式人生 > >Python3.6 20個入門級小程式(三)

Python3.6 20個入門級小程式(三)

Python3.6 20個小程式入門(三)

需求:將(第二題中)生成的 200 個啟用碼(或者優惠券)儲存到 MySQL 關係型資料庫中。

分析:第二題中使用uuid生成了128位的唯一編碼,但是這種編碼在客戶輸入時及其繁瑣,目前社會上常使用6位——8位的啟用碼是怎麼做的呢?其實很簡單,首先通過標準庫string生成包含0~9,a~z,A~Z的一個字串,然後使用標準庫中隨機選取的功能即可完成。另外網際網路上這道題的解決中出現MySQLdb三方庫,可是我使用的是Python3.6查詢資料發現MySQLdb只支援到2.*。因此不能使用它,Python3提供了替換的方案——pymysql三方庫可以滿足需求。

安裝pymysql

pip install pymysql

原始碼:

#-*- coding:utf-8-*-

#生成邀請碼功能
import pymysql
import string,random

def generateCode(n):
    r=[]
    s=string.digits+string.ascii_letters
    for i in range(200):
        t=''
        for j in range(n):
            t+=random.choice(s)
        r.append(t)
    return r

#存入mysql資料庫功能
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='dan81dan', db='pythontest', charset='utf8')
cursor = conn.cursor()
r = generateCode(8)
sql = "INSERT INTO `code1` (`id`,`code`) VALUES(%s,%s)"
for i in range(200):
    cursor.execute(sql,(i+1,r[i]))
conn.commit()
cursor.close()
conn.close()

本程式碼中關於資料庫插入的程式碼中
sql = "INSERT INTO `code1` (`id`,`code`) VALUES(%s,%s)"
坑:code1 、id 、code上邊不是單引號而是撇(數字1左邊那個按鈕)