基于pandas.to_sql批量导入数据到postgresql

关注点:

  1. 数据库连接的创建方式
  2. 测试连接数据库是否成功
  3. to_sql相关参数

版本信息:

  • Python 3.6
  • pandas 0.24.2
  • postgresql 11

数据库连接创建

不能用psycopg2.connect,需要用create_engine
参考文档

    engine = create_engine('postgres://' 
                           + 'zentao' + ':' 
                           + 'zentao' + '@' 
                           + '127.0.0.1' + ':' 
                           + '5432' + '/' 
                           + 'test')

测试连接数据库是否成功

     DB_Session = sessionmaker(bind=engine)
     session = DB_Session()
     data = session.execute("SELECT * FROM table limit 2")
     for row in data:
         for col in row:
             print(col),
         print  
     session.close()

to_sql相关参数
参考文档

正确的代码:

    df.to_sql(name='table_name', schema='schema_name', con=engine, 
              if_exists='append' ,index=False)

重点就是,对于有schema的场景
如果name直接传入schema_name.table_name,是无法识别的。

错误的代码:

    df.to_sql(name='schema_name.table_name', con=engine, 
              if_exists='append' ,index=False)

上述代码不会报错,但数据库中没有生成数据

所以一定要schema和table分开写

おすすめ

転載: blog.csdn.net/weixin_44325637/article/details/102815405