【发布时间】:2022-01-20 22:19:30
【问题描述】:
我正在尝试改进一些代码,并在它完成后停止它抛出警告/错误(由于使用next(iter)。
我实际上是在创建一个数据库引擎,以块的形式读取一个大型 CSV 文件,并将此处的数据附加到一个 PostgreSQL 数据库。
但是,一旦 while 循环完成,就会出现错误。我可能会添加一些错误处理来抑制这种情况,但想知道是否有更有效的方法来做到这一点。
# Create database engine
engine = create_engine(# contains Postgres connection stuff)
# Read in CSV
iter = pd.read_csv("myfile.csv", iterator=True, chunksize=100000)
df = next(iter)
# Convert column to datetime
df.date_col = pd.to_datetime(df.date_col)
# Create table
df.head(0).to_sql(name = "mytable", con = engine, if_exists='replace')
# Add first chunk
df.to_sql(name="mytable", con=engine, if_exists='append')
# Add remaining CSV data to database table
while True:
df = next(iter)
df.date_col = pd.to_datetime(df.date_col)
df.to_sql(name="mytable", con=engine, if_exists='append')
【问题讨论】:
-
有错误?什么错误?你能包括回溯吗?是
StopIteration错误吗? -
谢谢。不知道为什么我没有想到 for 循环。
标签: python pandas postgresql csv