gpt4 book ai didi

python - 当我没有表对象时,如何在 SQLAlchemy 中删除表?

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:39 25 4
gpt4 key购买 nike

我想在将一些数据写入 Pandas 数据帧之前删除一个表(如果它存在):

def store_sqlite(in_data, dbpath = 'my.db', table = 'mytab'):
database = sqlalchemy.create_engine('sqlite:///' + dbpath)
## DROP TABLE HERE
in_data.to_sql(name = table, con = database, if_exists = 'append')
database.close()

SQLAlchemy 文档都指向一个 Table.drop() 对象 - 我将如何创建该对象,或者是否有其他方法可以删除该表?

注意:我不能只使用 if_exists = 'replace' 因为输入数据实际上是我循环的 DataFrames 的字典 - 我已经抑制了它代码清晰(我希望)。

最佳答案

来自 Pandas 文档;

“您也可以在不使用 execute() 创建数据帧的情况下运行普通查询。这对于不返回值的查询很有用,例如 INSERT。这在功能上等同于在 SQLAlchemy 引擎或数据库连接上调用执行对象。”

http://pandas.pydata.org/pandas-docs/version/0.18.0/io.html#id3

所以我这样做;

from pandas.io import sql
sql.execute('DROP TABLE IF EXISTS %s'%table, engine)
sql.execute('VACUUM', engine)

其中“引擎”是 SQLAlchemy 数据库对象(上面 OP 的“数据库”)。 Vacuum 是可选的,只是减少了 sqlite 文件的大小(我在我的代码中不经常使用表删除部分)。

关于python - 当我没有表对象时,如何在 SQLAlchemy 中删除表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33229140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com