Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在SQLite中使用peewee更改字段的数据类型_Python_Sqlite_Orm_Peewee - Fatal编程技术网

Python 如何在SQLite中使用peewee更改字段的数据类型

Python 如何在SQLite中使用peewee更改字段的数据类型,python,sqlite,orm,peewee,Python,Sqlite,Orm,Peewee,请帮我弄清楚。我为数据库中的一个表创建了这个类 class ProfileAdditionalField(peewee.Model): profile=peewee.ForeignKeyField(RpProfile,在_delete='cascade'上) item=peewee.ForeignKeyField(AdditionalField,在_delete='cascade'上) is_allowed=peewee.BooleanField(默认值=True) 类元: 数据库=db 主键=

请帮我弄清楚。我为数据库中的一个表创建了这个类

class ProfileAdditionalField(peewee.Model):
profile=peewee.ForeignKeyField(RpProfile,在_delete='cascade'上)
item=peewee.ForeignKeyField(AdditionalField,在_delete='cascade'上)
is_allowed=peewee.BooleanField(默认值=True)
类元:
数据库=db
主键=peewee.CompositeKey('profile','item'))
当我试图修改RpProfile表时,ProfileAdditionalField表中的所有条目都将被删除。我认为问题在于设置“on_delete=cascade”

playhouse\u migrate.migrate(
migrator.add_列('RpProfile','show_link',
peewee.BooleanField(默认值=False)),
)
我使用SQLite,migrator.alter_column_type命令在其中不起作用。我甚至无法更改设置,使数据不再自动删除。
如何在不删除ProfileAdditionalField表中的数据的情况下向RpProfile表添加新字段?

Sqlite对更改列的支持有限。这是有据可查的:


在进行任何更改之前,您可以尝试禁用sqlite中的外键约束(
pragma foreign\u keys=0
)。除了在sqlite中添加一个新列之外,peewee还需要创建一个具有所需架构的临时表,迁移所有内容,然后删除旧表并重命名临时表。

非常感谢!我没想到解决办法会这么简单。在peewee中,当打开数据库peewee.SqliteDatabase(db_文件名,pragmas={'foreign_keys':0}时,只需要禁用它