我可以创建一个循环来更新SQL数据库吗?

时间:2016-08-09 08:15:03

标签: python sql pandas sqlalchemy

我的supportedRuntime文件中有6个表。我想知道是否有可能创建一个循环来遍历这6个表中的每一列,如果单元格值为app.config

,则将值转换为sql.db

我目前的代码

NULL

这似乎会产生错误。

我应该如何对其进行编码,以便能够浏览-中的所有for each_item in df.index: # Note: The name of the tables in the database is the variable 'each_item' pd.Dataframe.to_sql(df, con=engine, name=each_item, if_exists='append', index=False) # The below code does not work. And I have no idea why for each_columns in df.columns: connection.execute('UPDATE each_item SET each_columns = NULL WHERE each_columns = '-') ,并更新tables中的每个sql.db,如果单元格值= column

更具体地说,我得到的错误说它找不到桌子。 tables

1 个答案:

答案 0 :(得分:1)

好的,您的代码中存在很多问题。让我们一次解决每个问题:

    在这种情况下,
  1. pd.DataFrame.to_sql代表your_dataframe.to_sql df.to_sql。它是DataFrame对象上的方法,该对象是您创建的DataFrame。如果这让您感到困惑,请阅读Python中的类和方法。
  2. to_sql将其第一个参数作为表名,然后是连接,然后是模式名称,最后是if_exists和索引kwag
  3. 如果您在尝试写入SQL之前完成所有转换,那会更好。这只会使事情更清洁。此外,如果DataFrame被正确地dtyped,NaN值将自动转换为相关数据库引擎的相应NULL值表示。
  4. 如果你考虑上述所有要点,就应该这样做:

    for each_item in df.index: # I would avoid a syntax like this. Better to have the DataFrames in a list, than iterate through a DataFrame
        df.loc[each_item].to_sql(name=each_item, con=engine, if_exists='append', index=False) # Here again, I would avoid using the name engine for a connection to a database engine
    

    但是,上述代码的成功取决于您的DataFrame是否正确数据类型,我得出结论并不是因为您提出了这个问题。如果您使用DataFrame示例编辑问题,我将能够帮助您更正dtypes。

    聚苯乙烯。如果您的DataFrame是由您之前关于DataFrame合并的问题而创建的,那么请告诉我,我将在此为您提供这两个问题的全面解决方案。但是请使用该问题的数据编辑此问题,以便阅读此问题的人不会感到难过。