在python中使用SQLAlchemy向PostgreSQL数据库迭代插入行[英] Iteratively insert rows into a postgreSQL database using SQLAlchemy in python

本文是小编为大家收集整理的关于在python中使用SQLAlchemy向PostgreSQL数据库迭代插入行的处理方法,想解了在python中使用SQLAlchemy向PostgreSQL数据库迭代插入行的问题怎么解决?在python中使用SQLAlchemy向PostgreSQL数据库迭代插入行问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在编写一个从 excel 文件中读取数据并写入 postgresql 数据库的脚本.我已从 excel 文件中读取数据并将每一行数据存储为字符串数组.

我尝试了几件事,比如

  for x in range(len(sh.columns)):
        i = users.insert()
        i.execute({sh.columns[x] : sh.values[0][x]})

这是对我的 Excel 工作表和我在用户引用的 postgreSQL 数据库中编辑的表的引用.

我也试过了

'INSERT INTO users VALUES %s'%(tuple(sh.values[0])

还有更多的变体.

推荐答案

这是我的解决方案.这就是我使用的,它就像一个魅力!

import pandas as pd
import sqlalchemy as sql
import sqlalchemy.orm as orm



sh = pd.ExcelFile("ExcelFileName").parse("SheetName")
db=sql.create_engine('DBtype://username:password@localhost:postnumber/dbname')
metadata = sql.schema.MetaData(bind=db,reflect=True)



table = sql.Table('TableinDB', metadata, autoload=True)

class Row(object):
 pass
rowmapper = orm.Mapper(Row,table)
print table.columns

Sess = orm.sessionmaker(bind = db)
session = Sess()

for x in range(len(sh.values)):
 row1 = Row() 
 row1.field1 = sh.values[x][0]
 row1.field2 = sh.values[x][1]
 #Add as many fields as you want
session.add(row1)
#forloop ends
session.commit()

本文地址:https://www.itbaoku.cn/post/1764158.html