Python - peewee принимает 2 позиционных аргумента, но 3 были даны - PullRequest
2 голосов
/ 23 марта 2020

Я новичок в изучении Python и в курсе python - подключитесь к базе данных sqlite в этом коде:

import os
import pewee

baza =  pewee.SqliteDatabase('test.db')

class BazaModel():
 database = baza

class Klasa(BazaModel):
 nazwa =  pewee.CharField(null=False)
 profil =  pewee.CharField(default='')

class Uczen(BazaModel):
 imie =  pewee.CharField(null=False)
 nazwisko =  pewee.CharField(null=False)
 klasa =  pewee.ForeignKeyField(Klasa, related_name='uczniowie')

baza.connect() 
baza.create_tables([Klasa, Uczen], True)

У меня ошибка:

baza.create_tables ([Klasa, Uczen], True) TypeError: create_tables () принимает 2 позиционных аргумента, но 3 было дано

Курс с 2016 года, так что я думаю, что есть более новая версия peewee, но я не знаю как это исправить ...

1 Ответ

2 голосов
/ 23 марта 2020

3 аргумента - это ваша база данных, список таблиц и логическое значение: some_obj.some_fun(obj1, obj2) переводится python как some_fun(some_obj, obj1, obj2). Это говорит о том, что у вас есть 3 позиционных аргумента, а не 2.

В peewee do c вы можете видеть, что create_tables принимает только один дополнительный позиционный аргумент (два с базой данных) , Третий аргумент, который вы используете, теперь является аргументом ключевое слово (а не позиционный один), вам нужно указать, что это такое, то есть вы должны написать:

baza.create_tables([Klasa, Uczen], safe=True)
...