我需要将大量数据上传到MySQL数据库。对于大多数模型,我使用django的ORM,但是我的一个模型将具有数十亿(!)个实例,并且我想优化其插入操作。

我似乎找不到找到使executemany()工作的方法,并且在进行谷歌搜索之后,似乎几乎没有示例了。

我正在寻找正确的sql语法+正确的命令语法+正确的值数据结构以支持以下sql语句的executemany命令:

INSERT INTO `some_table` (`int_column1`, `float_column2`, `string_column3`, `datetime_column4`) VALUES (%d, %f, %s, %s)

是的,我明确指出了ID(int_column1)以提高效率。

简短的示例代码会很棒

最佳答案

这是一个实际上使用executemany()的解决方案!
基本上,示例here中的想法将起作用。
但请注意,在Django中,您需要使用%s占位符而不是问号。
另外,您将要管理您的交易。我不会在这里讨论,因为有很多可用的文档。

    from django.db import connection,transaction
    cursor = connection.cursor()



    query = ''' INSERT INTO table_name
            (var1,var2,var3)
            VALUES (%s,%s,%s) '''


    query_list = build_query_list()

    # here build_query_list() represents some function to populate
    # the list with multiple records
    # in the tuple format (value1, value2, value3).


    cursor.executemany(query, query_list)

    transaction.commit()

10-07 15:08