GVKun编程网logo

将python(pandas)数据框写入SQL数据库错误(pandas 写入数据库)

18

在本文中,我们将为您详细介绍将python的相关知识,并且为您解答关于pandas数据框写入SQL数据库错误的疑问,此外,我们还会提供一些关于Pandas数据框python中的SQL查询、pandas

在本文中,我们将为您详细介绍将python的相关知识,并且为您解答关于pandas数据框写入SQL数据库错误的疑问,此外,我们还会提供一些关于Pandas 数据框 python 中的 SQL 查询、pandas将数据框写入其他PostgreSQL模式、Pandas(Python)-使用条件从另一个更新数据框的列、Python Pandas使用NaN值写入sql的有用信息。

本文目录一览:

将python(pandas)数据框写入SQL数据库错误(pandas 写入数据库)

将python(pandas)数据框写入SQL数据库错误(pandas 写入数据库)

我正在尝试将python数据框放入MS SQL DB中,并且出现以下错误

功能

def put_to_server(df):       # df is a pandas data frame
   server="KORNBSVM04\MSSQLSERVER2012"
   Driver="{SQL Server}"
   userid=''
   pswd=''
   cnxn = pyodbc.connect(driver=Driver,server=server,database="CIHOTLINE",uid=userid,pwd=pswd)
   cur=cnxn.cursor()
   df.to_sql(name='dbo.test',con=cnxn)

错误

 File "C:\Python27\lib\site-packages\pandas\core\generic.py",line 950,in to_sql
index_label=index_label)
File "C:\Python27\lib\site-packages\pandas\io\sql.py",line 475,line 1084,line 543,in __init__
if self.pd_sql.has_table(self.name):
File "C:\Python27\lib\site-packages\pandas\io\sql.py",line 1094,in has_table
return len(self.execute(query).fetchall()) > 0
File "C:\Python27\lib\site-packages\pandas\io\sql.py",line 1041,in execute
raise_with_traceback(ex)
File "C:\Python27\lib\site-packages\pandas\io\sql.py",line 1030,in execute
cur.execute(*args)
pandas.io.sql.DatabaseError: Execution failed on sql: SELECT name FROM sqlite_master WHERE type='table' AND name='dbo.test';

Pandas 数据框 python 中的 SQL 查询

Pandas 数据框 python 中的 SQL 查询

如何解决Pandas 数据框 python 中的 SQL 查询?

我想在 Pandas 数据帧上执行此 sql 脚本,以获取 premoteid 在不同的 cremoteid 中出现的次数。

SELECT count(distinct cremoteid),sr.premoteid
FROM sales_ranking sr
JOIN storesales_hourly sh ON sh.premoteid = sr.premoteid
group by sr.premoteid

我试过了:

df.groupby([''premoteid'']).unique()["cremoteid"].count()

但我收到此错误:

''DataFrameGroupBy'' object has no attribute ''unique''

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

pandas将数据框写入其他PostgreSQL模式

pandas将数据框写入其他PostgreSQL模式

我正在尝试使用模式限定表将熊猫DataFrame写入PostgreSQL数据库。

我使用以下代码:

import pandas.io.sql as psql
from sqlalchemy import create_engine

engine = create_engine(r'postgresql://some:user@host/db')

c = engine.connect()
conn = c.connection

df = psql.read_sql("SELECT * FROM xxx",con=conn)    
df.to_sql('a_schema.test',engine)

conn.close()

发生的情况是,大熊猫在名为“ a_schema.test”的表中以“公共”模式编写,而不是在“ a_schema”模式中的“ test”表中编写。

如何指示熊猫使用与公共模式不同的模式?

谢谢

Pandas(Python)-使用条件从另一个更新数据框的列

Pandas(Python)-使用条件从另一个更新数据框的列

我遇到问题,找到了解决方案,但我觉得这是错误的方法。也许,有一种更“规范”的方式来做到这一点。

问题

我有两个要合并的数据框,而没有多余的列,也没有擦除现有的信息。范例:

现有数据框(df)

   A  A2  B0  1   4  01  2   5  1

要合并的数据框(df2)

   A  A2  B0  1   4  21  3   5  2

我想更新dfdf2是否列“A”和“A2”相对应。结果将是(:

   A  A2    B0  1   4  2.0 <= Update value ONLY1  2   5  1.0

这是我的解决方案,但我认为这不是一个很好的解决方案。

import pandas as pddf = pd.DataFrame([[1,4,0],[2,5,1]],columns=[''A'',''A2'',''B''])df2 = pd.DataFrame([[1,4,2],[3,5,2]],columns=[''A'',''A2'',''B''])df = df.merge(df2,on=[''A'', ''A2''],how=''left'')df[''B_y''].fillna(0, inplace=True)df[''B''] = df[''B_x'']+df[''B_y'']df = df.drop([''B_x'',''B_y''], axis=1)print(df)

有谁有更好的方法吗?谢谢 !

答案1

小编典典

是的,无需合并即可完成:

rows = (df[[''A'',''A2'']] == df2[[''A'',''A2'']]).all(axis=1)df.loc[rows,''B''] = df2.loc[rows,''B'']

Python Pandas使用NaN值写入sql

Python Pandas使用NaN值写入sql

我正在尝试从ascii读取几百张表,然后将它们写入mySQL。使用Pandas似乎很容易,但是我遇到了一个对我来说没有意义的错误:

我有一个8列的数据框。这是列列表/索引:

metricDF.columnsIndex([u''FID'', u''TYPE'', u''CO'', u''CITY'', u''LINENO'', u''SUBLINE'', u''VALUE_010'', u''VALUE2_015''], dtype=object)

然后to_sql,我使用追加数据到mySQL

metricDF.to_sql(con=con, name=seqFile, if_exists=''append'', flavor=''mysql'')

我收到关于列为“ nan”的奇怪错误:

OperationalError: (1054, "Unknown column ''nan'' in ''field list''")

如您所见,我所有的列都有名称。我意识到mysql / sql对编写的支持出现在开发中,所以也许这是原因?如果是这样,是否可以解决?任何建议将不胜感激。

答案1

小编典典

更新 :从pandas
0.15开始,to_sql支持写入NaN值(它们将NULL在数据库中写入),因此不再需要下面描述的解决方法(请参阅https://github.com/pydata/pandas/pull/8208)。
熊猫0.15将于10月发布,并且该功能已合并到开发版本中。


这可能是由于NaN你的表值,这是目前该大熊猫SQL函数不处理的NaN以及一个已知的缺点(https://github.com/pydata/pandas/issues/2754,HTTPS:/
/github.com/pydata/pandas/issues/4199)

作为目前的一种解决方法(对于0.14.1及更低版本的熊猫),您可以使用以下方法将nan值手动转换为None:

df2 = df.astype(object).where(pd.notnull(df), None)

然后将数据帧写入sql。但是,这会将所有列转换为对象dtype。因此,您必须基于原始数据框创建数据库表。例如,如果您的第一行不包含NaNs:

df[:1].to_sql(''table_name'', con)df2[1:].to_sql(''table_name'', con, if_exists=''append'')

我们今天的关于将pythonpandas数据框写入SQL数据库错误的分享就到这里,谢谢您的阅读,如果想了解更多关于Pandas 数据框 python 中的 SQL 查询、pandas将数据框写入其他PostgreSQL模式、Pandas(Python)-使用条件从另一个更新数据框的列、Python Pandas使用NaN值写入sql的相关信息,可以在本站进行搜索。

本文标签: