admin

Django:将自定义原始SQL插入与executemany和MySQL结合使用

sql

我需要将大量数据上传到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)以提高效率。

简短的示例代码会很棒


阅读 188

收藏
2021-05-10

共1个答案

admin

这是一个实际上使用executemany()的解决方案!

基本上,这里示例中的想法将起作用。

但请注意,在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()
2021-05-10