我有以下代码
db = peewee.SqliteDatabase(":memory:")
class CategoryProduct(peewee.Model):
category_code = peewee.CharField()
product_code = peewee.CharField()
product_order = peewee.CharField()
default_category = peewee.CharField()
def __str__(self):
return "({0}, {1})".format(self.category_code, self.product_code)
db.connect()
db.create_tables([CategoryProduct])
当我运行脚本时,我得到了
('CREATE TABLE "categoryproduct" ("id" INTEGER NOT NULL PRIMARY KEY, "category_code" VARCHAR(255) NOT NULL, "product_code" VARCHAR(255) NOT NULL, "product_order" VARCHAR(255) NOT NULL, "default_category" VARCHAR(255) NOT NULL)', [])
Traceback (most recent call last):
File "/Users/daniels/Work/sandbox/venv/lib/python3.5/site-packages/peewee.py", line 3676, in execute_sql
cursor.execute(sql, params or ())
sqlite3.OperationalError: table "categoryproduct" already exists
知道发生了什么吗?如果我创建任何其他模块,它可以正常工作,但不知何故它不喜欢这个名称。
最佳答案
文档为您提供了注释:
注意: 请记住在模型类上指定一个数据库,否则 peewee 将回退到名为“peewee.db”的默认 SQLite 数据库。
只需将数据库添加到您的类
class BaseModel(peewee.Model):
class Meta:
database = db
class CategoryProduct(BaseModel):
category_code = peewee.CharField()
product_code = peewee.CharField()
product_order = peewee.CharField()
default_category = peewee.CharField()
def __str__(self):
return "({0}, {1})".format(self.category_code, self.product_code)
关于python-3.x - PeeWee ORM 报告表已存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39591973/