gpt4 book ai didi

python - 使用 Pony ORM 更改已创建的 sqlite 数据库的正确方法

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:27 25 4
gpt4 key购买 nike

我可能在问一件显而易见的事情,但我找不到答案。我正在学习 Pony ORM,并从文档中创建简单的数据库开始。我设计了一个简单的数据库图和代码https://editor.ponyorm.com/user/nidza11/Ponz#

from pony.orm import *

db = Database()

class Person(db.Entity):
id = PrimaryKey(int, auto=True)
name = Required(str)
age = Required(int)
cars = Set('Car', cascade_delete=True)

class Car(db.Entity):
id = PrimaryKey(int, auto=True)
make = Required(str)
model = Required(str)
person = Required(Person)

db.bind("sqlite", "TestDB.sqlite", create_db = True)
db.generate_mapping(create_tables=True)

with db_session:
p1 = Person(name="John", age=24)
p2 = Person(name="Ive", age=26)
p3 = Person(name="Olivia", age = 26)
c1 = Car(make="Toyota", model = "Prius", person = p2)
p3 = Car(make="Ford", model = "Explorer", person = p3)

运行代码后,数据库被创建并填充。我想使 Person 表中的名称属性唯一。所以我改变了代码名称 = 必需(str,unique=True)再次运行代码后,数据库已填充,但名称字段未设置为唯一。数据被重复。根据数据库浏览器名称字段是“唯一的”。我预计会出现错误。此类错误将帮助我保持实体和数据库同步。

仅在 Person 表类中添加新属性,而不是在数据库中添加新属性,将导致错误。

是否可以仅在代码内的一处进行更改,这也会反射(reflect)在数据库中?

如果我必须在两个地方进行相同的更改,如何做得又漂亮又干净?

最佳答案

我刚刚在 Pony ORM“Telegram”群组中询问过,这就是那里发生的事务。

关于python - 使用 Pony ORM 更改已创建的 sqlite 数据库的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41360820/

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