背景INFOS:Python的SQLAlchemy的瓶插入新列到表 - Heroku的PostgreSQL的
我有一个由Heroku的托管在一个PostgreSQL数据库的应用程序。
我已经在这个数据库中的一些数据,现在我不得不在我的一个表中添加一个新的行。
通常我删除旧的数据库并重新创建它。但是,如果项目实时生效,我将不得不更新表格而不会丢失数据。
我可以创建一个DUMP并删除旧的数据库,并像往常一样重新创建它。然后,我可以使用脚本并将所有现有数据上传到新的数据库中。但是这感觉不对。
我需要什么:
在我目前的状况有博客数据table=blog
在数据库上,我需要插入新列到我的table=zimmer
所以blog
心不是甚至影响。
class Zimmer(Base):
__tablename__ = 'zimmer'
id = Column(Integer, primary_key=True)
infofeld = Column(Text, nullable=False)
land = Column(Text, nullable=False)
bundesland = Column(Text, nullable=False)
stadt = Column(Text, nullable=False)
plz = Column(Text, nullable=False)
strasse = Column(Text, nullable=False)
hausnr = Column(Text, nullable=True)
eigener_link = Column(Text, nullable=True)
zimmer_lat = Column(Float, nullable=False)
zimmer_lng = Column(Float, nullable=False)
reingestellt_am = Column(Date, nullable=False)
这是新的价值:eigener_link = Column(Text, nullable=True)
我目前正在尝试在本地主机上,但到目前为止,我只得到ProgrammingError
因为每次我尝试加载其中zimmer
显示一个网站,它说没有列eigener_link
(这是合乎逻辑的)。
我的尝试:
我tryed到try except
的ProgrammingError
在它发生的线,这给了我一个InternalError
。在这里我tryed更新zimmer
表并添加新列eigener_link
:
try:
for page in paginator:
pages_list.append(page.number)
except ProgrammingError:
update(Zimmer).values(eigener_link='Ihr Link')
db_session.commit()
它给了我一个InternalError
。我通过pgAdmin检查了数据库,并且没有添加新的值。
try:
for page in paginator:
pages_list.append(page.number)
except ProgrammingError:
db_session.execute('ALTER TABLE zimmer ADD eigener_link TEXT')
db_session.commit()
这给了我也InternalError
交易已被取消。