python - 如何在 SQLite 中使用 peewee 更改字段的数据类型
问题描述
租赁帮我弄清楚。我为数据库中的表创建了这个类。
class ProfileAdditionalField(peewee.Model):
profile = peewee.ForeignKeyField(RpProfile, on_delete='cascade')
item = peewee.ForeignKeyField(AdditionalField, on_delete='cascade')
is_allowed = peewee.BooleanField(default=True)
class Meta:
database = db
primary_key = peewee.CompositeKey('profile', 'item')
当我尝试修改 RpProfile 表时,ProfileAdditionalField 表中的所有条目都会被删除。我认为问题在于设置“on_delete = cascade”
playhouse_migrate.migrate(
migrator.add_column('RpProfile', 'show_link',
peewee.BooleanField(default=False)),
)
我使用 SQLite,migrator.alter_column_type 命令在其中不起作用。我什至无法更改设置,以便不再自动删除数据。如何在不从 ProfileAdditionalField 表中删除数据的情况下向 RpProfile 表添加新字段?
解决方案
Sqlite 对更改列的支持有限。这是有据可查的:
https://sqlite.org/lang_altertable.html
pragma foreign_keys=0
在进行任何更改之前,您可以尝试在 sqlite ( ) 中禁用外键约束。除了简单地在 sqlite 中添加新列之外,为了做任何事情,peewee 必须创建一个具有所需架构的临时表,迁移所有内容,然后删除旧表并重命名临时表。
推荐阅读
- javascript - 在 React SPA 中的多个选项卡之间处理会话和空闲计时器
- typescript - 带有可选错误参数的打字稿回调类型
- android - 自动连接和断开蓝牙配对设备
- reactjs - React Bootstrap Table 显示和更新
- python - 替换OpenCV中多个RGB值的所有像素
- arrays - bash 5.1.4 索引中带有句点的关联数组适用于一个语句,但不适用于另一个语句
- angular - 为什么子路由不会显示在 IONIC/Angular 中?
- php - 我需要修复一些不会根据所选按钮类别更改内容的按钮
- python - 缺少键时使用 json_normalize 函数
- accordion - 手风琴不会倒塌