Python 插入数据库的各种方式

摘要:
当我们使用python编写程序时,我们将使用数据库,因此我们将在操作过程中插入数据。现在我将介绍几种在python中插入数据的方法。

我们在使用 python 写程序的时候,都会用到数据库,那么在操作过程中我们都会进行插入数据,那么现在我介绍几种 python 插入数据的方式。

add方式
from sqlalchemy.orm import scoped_session, sessionmaker

db_conn = scoped_session(sessionmaker())

company = Company()
company.id = 1
company.name = 'NAME '
db_conn.add(company)
db_conn.commit()
bulk_save_objects方式
company = list()
for i in data:
    company.append(Company(**i))
pg_con.bulk_save_objects(company)
bulk_insert_mappings方式
pg_con.bulk_insert_mappings(Company, data)
engine.execute方式
from sqlalchemy import create_engine

pg_con = create_engine('postgresql://postgres:xxxxxxxxxxxxxxxxx@10.44.99.101:5432/situation')
pg_con.engine.execute(
    Company.__table__.insert(),
    data
)
pg_con.commit()
copy_from方式
from io import StringIO
import psycopg2

conn = psycopg2.connect(host="10.44.99.123", port="5432", user="postgres", password="xxxxxxxxxxxxxxxxxx",
                        database="xxxxx")

f = StringIO()

    for i in data:
        sql_line = u"{0}\t{1}\n"
        event_id = i.get("event_type", 1)
        name = i.get("nmae", 1)
        sql_line = sql_line.format(event_id, name)

        f.write(sql_line)

    f.seek(0)

    cur = conn.cursor()
    cur.copy_from(f, "t_warn_msg", columns=("event_id", "nmae"), sep='\t', null='\\N', size=16384)

    conn.commit()

 他们之间的性能差距很大

最慢的就是 add 方式

次慢 bulk_save_objects 方式

慢的  bulk_insert_mappings 方式

快的  engine.execute 方式

最快的  copy_from 方式

如果 使用 bulk_insert_mappings  插入10W条数据需要10秒,那么使用 copy_from  方式只需要1秒

免责声明:文章转载自《Python 插入数据库的各种方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JBoss环境搭建及部署Web项目Centos查看端口占用情况和开启端口命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

access数据库删除两个日期之间 的数据 SQL语句

sql2005中sql语句为 DELETE FROM table WHERE ([date] BETWEEN '2011 - 9 - 19 0 : 00 : 00 ' AND '2011 - 9 - 20 0 : 00 : 00') 词语法是正确的,发现再access中没有影响相关行数,解决方法在日期前后加上#,语法为: delete from table...

Access数据库 字段值 字符替换

两种方法: (一)Access数据库内部使用方法 Update 表 SET 字段=replace(字段,"原字符","替换字符") 示例: 假设表为biao、字段为content、原字符为xiazai.jb51.net、替换字符为down1.jb51.net, 那么相应的SQL语句如下:Update biao SET content=replace(co...

Android 让你的 Room 搭上 RxJava 的顺风车 从重复的代码中解脱出来

什么是 Room ? 谷歌为了帮助开发者解决 Android 架构设计问题,在 Google I/O 2017 发布一套帮助开发者解决 Android 架构设计的方案:Android Architecture Components,而我们的 Room 正是这套方案的两大模块之一。 定义:数据库解决方案 组成:Database、Entity、DAO 为...

ASP.NET Core Web API下事件驱动型架构的实现(五):在微服务中使用自我监听模式保证数据库更新与消息派发的可靠性

在上一讲中,我介绍了CQRS架构中聚合与聚合根的实现,并通过单元测试验证了设计的正确性。这部分内容比较难,在实际应用过程中存在一定的门槛,所以感觉关注的读者并不是特别多。然而,CQRS本身作为一种事件驱动型架构,解决了现在流行的微服务中的一些细节问题,我认为还是非常有必要探究讨论的。这部分内容我会在另外讨论微服务架构的文章中详细注解,在这里就不多做说明了。...

python数组操作

python中的数组其实就是list,但它更像是java的arraylist,而且功能比arraylist更强大。因为python的list其实是个对象,所以对于他的操作和删除比较有讲究。 创建列表sample_list = ['a',1,('a','b')]Python 列表操作sample_list = ['a','b',0,1,3]得到列表中的某一个...

Apache Beam是什么?

  不多说,直接上干货! 以下是Apache Beam的官网 : https://beam.apache.org/ Apache Beam的前世今生       Apache Beam前身是Google Dataflow SDK,DataFlow是谷歌的提供大数据计算平台。在DataFlow之前,谷歌的批处理和流处理(流计算,实时处理)使用了不同系统,流...