当前位置: 首页 > 面试题库 >

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

高高雅
2023-03-14
问题内容

我需要将大量数据上传到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()的解决方案!

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

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


 类似资料:
  • 本文向大家介绍Django自定义分页与bootstrap分页结合,包括了Django自定义分页与bootstrap分页结合的使用技巧和注意事项,需要的朋友参考一下 django中有自带的分页模块Paginator,想Paginator提供对象的列表,就可以提供每一页上对象的方法。 这里的话不讲解Paginator,而是自定义一个分页类来完成需求: 利用bootstrap的css,生成好看的html

  • 我使用Laravel创建一个简单的REST服务,将一个点几何图形和另外两个字符串值一起插入到PostgreSQL(用PostGIS扩展)表中。由于雄辩(据我所知)不支持PostGIS函数,我使用的是原始的SQL查询。 我的控制器如下所示: 通过请求发送的值是: 名称:Lidl 商店:便利 geom: {“type”:“Point”,“坐标”:[18.126712,42.643304],“crs”:

  • 问题内容: 我有类似以下的表格(Django模型定义,并带有一个postgres数据库): 我使用Python脚本从CSV文件设置数据库。原始文件列出了具有整数id和整数“ person”字段的“所有者”,该字段映射到Person.id中的整数。 但是,鉴于Owner中的“ person”列希望使用Person对象,我该如何编写原始SQL字符串以将值插入Owner? 问题答案: 您没有说为什么需要

  • 问题内容: 我目前正在使用MySQL和Python从网络上抓取数据。具体来说,我正在抓取表数据并将其插入到数据库中。我当前的解决方案可以工作,但是我觉得它效率极低,如果不重写代码,很可能会锁定数据库。这是我当前使用的(部分代码): 执行表的每一行都很麻烦。我尝试使用,但似乎无法弄清楚如何正确访问字典的值。因此,在给定数据结构的情况下,如何在这里使用它插入数据库? 问题答案: 希望对您有帮助

  • 问题内容: 目前,我有一个RESTful Web服务,其端点通过Jersey / JAX-RS公开: 我使用Jackson将POJO序列化/反序列化为JSON,并且我的服务既响应也将POJO发送回。 我现在正在寻找可能使用Google协议缓冲区(或等效技术)来帮助压缩/优化客户端与服务之间的通信的方法,因为JSON /文本非常笨重/浪费。 实际上,我有一个由“微服务”体系结构组成的大型后端。数十种

  • 问题内容: 因此,我通过以下资源学习Django(1、3、1,“最终”,0):http : //www.djangobook.com/en/2.0/chapter05/ 我通过Synaptic安装了“ mysql-server”和“ python-mysqldb”。我在settings.py中更改了相关设置。 上面提到的书告诉我们从manage.py shell运行: 运行以下命令后出现此错误: