我使用以下代码片段创建我的架构:
from peewee import *
db = PostgresqlDatabase('db', user='user', password='pass', host="localhost")
class Actor(Model):
name = TextField(unique=True)
db.create_table(Actor)
不幸的是,peewee似乎没有添加UNIQUE
约束。
输出SQL:
-- Table: actor
-- DROP TABLE actor;
CREATE TABLE actor
(
id serial NOT NULL,
name text NOT NULL,
CONSTRAINT actor_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE actor
OWNER TO user;
事实上,我可以使用相同的name
添加多行。
知道出了什么问题? 非常感谢大家提前:))
我使用postgres 9.3.10如果重要的话...... python 2.7.6,peewee 2.6.4(尝试过不同的版本)。
答案 0 :(得分:1)
您应该使用Model.create_table()
API来处理创建表和索引。
或者,您可以调用db.create_tables()
,它可以解析模型依赖关系,并以适当的顺序创建多个表(和索引)。
db.create_table()
,您正在使用的API,只创建表本身 - 没有索引。
所以:
db.create_tables([Actor])
或者:
Actor.create_table()