Pandas有一个很棒的功能,您可以在其中将数据帧写入SQL中的表.
df.to_sql(con=cnx, name='some_table_name', if_exists='replace', flavor='mysql', index=False)
有没有办法以这种方式制作临时表?
据我所知,文档中没有任何内容.
在DataFrame.to_sql()
使用内置到大熊猫pandas.io.sql
包,其本身依赖于SQLAlchemy的作为数据库抽象层.要在SQLAlchemy ORM中创建"临时"表,您需要提供前缀:
t = Table( 't', metadata, Column('id', Integer, primary_key=True), # ... prefixes=['TEMPORARY'], )
从我看到的,pandas.io.sql
不允许您指定prefixes
或轻松更改表的创建方式.
解决这个问题的一个办法是事先创建临时表,并使用to_sql()
与if_exists="append"
(都使用相同的数据库连接).
这也是我试图做的:覆盖pandas.io.sql.SQLTable
's _create_table_setup()
方法并传递prefixes
给Table
构造函数.出于某种原因,该表仍然是非临时的.不确定它是否会有所帮助,但这里是我使用的代码:gist.这有点像hacky,但我希望它至少可以作为一个示例代码来帮助您开始这种方法.