我想在运行时使用声明性基础创建200多个表。我知道这是不可能的,所以我的想法是创建一个公用表并将其重命名200次。
class Movie(Base):
id = Column(Integer, primary_key=True)
title = Column(String)
release_date = Column(Date)
name=Column(String)
__tablename__ = 'titanic'
def __init__(self, newname,title, release_date):
self.title = title
self.release_date = release_date
从" titanic"更改表名的代码是什么? to" wild"?
在Postgresql中它是
ALTER TABLE table_name
RENAME TO new_table_name;
我没有在sqlalchemy中找到解决方案。
此表没有外键。
这个问题的目的是通过sqlalchemy中提供的解决方案(if)重命名现有表,而不是以纯粹的python方式(如其他问题中所述)。
答案 0 :(得分:-1)
重命名表的最简单方法是创建一个新表,使用INSERT INTO
语句将数据转储到其中。
更多来自网络:
您必须向数据库发出适当的
ALTER
statements以更改表的名称。就表元数据本身而言,您可以尝试set table.name = 'newname'
,并使用其新名称将Table对象重新放置在metadata.tables
中,但这可能会对引用旧名称的外键产生挥之不去的副作用名称。通常,不支持该模式 - 它旨在使SQLAlchemy
应用程序以固定的数据库结构运行(只能动态添加新表)。 (Source)