gpt4 book ai didi

python - sqlalchemy: 'metadata.drop_all' 不工作

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:09 24 4
gpt4 key购买 nike

我尝试使用“Base.metadata.drop_all(bind=engine)”删除模式中所有存在的表,然后重新创建一个新表。然而,表并没有像我想的那样被删除,只是在旧表上追加了记录。我是 sqlalchemy 的新手,谁能告诉我我在这里做错了什么……谢谢!

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine("mysql+pymysql://root:pswd@127.0.0.1:3306/bond?charset=utf8", echo=True)
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base(bind=engine)
Base.metadata.drop_all(bind=engine)
table = Table('TradeHistory', Base.metadata,
Column('Id', Integer, primary_key=True),
Column('trade_date', String(50)),
Column('rem_period', String(50)),
Column('bond_code', String(50)),
Column('bond_name', String(50)),
Column('bond_rating', String(50)),
Column('bond_yield', String(50)),
Column('note', String(50)),
Column('offer', String(50)),
Column('bid', String(50)),
Column('amount', String(50)))
Base.metadata.create_all(bind=engine)
conn.execute(table.insert(), listToWrite)
session.commit()
session.close()

最佳答案

Base.metadata.drop_all(bind=engine)将删除它知道的所有表。

您正在定义表 'TradeHistory'在该行之后,该表不会被删除。

因此,首先定义您的整个数据模型(通常在单独的 model 模块中完成),然后执行类似 drop_all 的操作和 create_all .

关于python - sqlalchemy: 'metadata.drop_all' 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50513791/

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