2016-09-20 13 views
2

I持って、次のコードピーウィーORMはテーブルが既に存在していることを報告し

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 

何が起こっているすべてのアイデアを得ますか?他のモジュールを作成してもうまく動作しますが、何とかこの名前が気に入らないのです。

答えて

2

ドキュメントはあなたのためのノートを持っている:

注: は、あなたのモデルクラス上のデータベースを指定することを忘れないでくださいそれ以外の場合はピーウィー「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) 
+0

男ああ...コピー&ペーストの問題が...また、「クラスのMeta」をコピーするのを忘れ...私はまた、デバッグモードを有効にするだろう望みました各モデルがどのデータベースを使用しようとしているかを示します。デバッグしやすくなったでしょうか? – daniels

関連する問題