利用 pymysql 往數據庫插入百萬條數據


思路:

  1. 先創建一個自定義的數據庫表;
  2. 生成一個列表,列表中的數據應該和數據庫表中的每一列對應;
  3. 利用cursor.executemany 批量插入列表中的數據。

注意點:

批量添加數據時,數據格式必須list[tuple(),tuple(),tuple()]  或者tuple(tuple(),tuple(),tuple())

代碼解析:

# -*- coding: utf-8 -*-
# Author:benjamin

import pymysql

# 創建連接
conn = pymysql.connect(host='192.168.214.128', port=3306, user='root', passwd='ben123', db='db2')

# 創建游標
cursor = conn.cursor()

def createTable():
    '''
    創建數據庫表
    :return:
    '''
    
    try:
        sql = '''
            create table mytable (
            nid int not null auto_increment primary key,
            name varchar(255) not null,
            email varchar(255) not null,
            extra text
            )engine=innodb default charset=utf8
        '''
        cursor.execute(sql)
        conn.commit()
        print('create table ok!')
    except Exception as e:
        print(e)


def myList(value):
    '''
    生成一個列表,[('admin1', 'admin1qq.com', 'hahaadmin1'),...]
    :param value: 自定義的數據量
    :return: new_list
    '''
    new_list = [] # 新建一個空列表用來存儲元組數據

    for i in range(1, value + 1):

        name = 'admin'+ str(i)
        email = name + '@qq.com'
        extra = 'I am '+ name

        tup = (name,email,extra) # 構造元組
        new_list.append(tup)  # [(),(),()...]

    print("*"*5+"generate list ok"+"*"*5)
    return new_list


def myInsert(newList):
    '''
    數據庫插入
    :param newList: 傳入的列表數據
    :return:
    '''

    try:
        sql = "insert into mytable(name,email,extra) values(%s,%s,%s)" # 要插入的數據
        cursor.executemany(sql,newList) # 執行插入數據

        conn.commit()
        cursor.close()
        conn.close()
        print('insert ok')
    except Exception as e:
        print(e)


if __name__ == '__main__':

    # 創建數據表
    createTable()
    # 選擇要插入的數據量
    value = 1000000 # 定義數據量
    newList = myList(value)
    myInsert(newList)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM