python3 pymysql操作mysql

# 第 0002 題:將 0001 題生成的 200 個激活碼(或者優惠券)保存到 MySQL 關係型數據庫中。
import pymysql
import string
import random


class MyDb():
    def __init__(self):
        self.conn = None

    def connect( self ):
        self.conn =  pymysql.connect(host='0.0.0.0', port=3306, user='root', password='123456', db='voice_t2')

    def cursor( self ):
        try:
            return self.conn.cursor()
        except Exception:
            self.connect()
            return self.conn.cursor()

    def commit( self ):
        return self.conn.commit()

    def close( self ):
        return self.conn.close()


def DropTable(conn):
    conn.execute("DROP TABLE IF EXISTS `user_key`")

def CreateTable(conn):
    sql_create = ''' CREATE TABLE `user_key` (`key` varchar(50) NOT NULL)'''
    conn.execute(sql_create)

def InsertDatas(conn):
    insert_sql = "INSERT INTO user_key VALUES (%s)"
    key_list = gen_key(200)
    conn.executemany(insert_sql, key_list)

def QueryData(conn):
    sql = "select * from user_key"
    conn.execute(sql)
    rows = conn.fetchall()
    if rows is None:
        print("rows None")
    for row in rows:
        print(row)

def gen_key(num,len=7):  # num 爲生成多少個,len 每個的長度
    result = []
    base_str = string.ascii_letters + string.digits    # 所有的大小寫字母和數字
    for i in range(num):  #控制生成多少個
        key_list = [random.choice(base_str) for i in range(len)]  #用列表生成式生成列表
        # print(key_list)
        key_str = ''.join(key_list)         # 將列表用join形成字符串
        # print(key_str)
        result.append(key_str)
    return result

if __name__ == '__main__':
    db = MyDb()
    db.connect()
    cursor = db.cursor()
    DropTable(cursor)
    CreateTable(cursor)
    InsertDatas(cursor)
    db.commit()
    QueryData(cursor)
    db.close()



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章