PeeWee 关系数据库 - 获取类型错误:预期 str,而不是 ModelBase

问题描述 投票:0回答:1

我在使用 SQLite 和 peewee 时遇到了 TypeError,我不确定如何修复。这是我的程序。

file = 'network.db'
if os.path.exists(file):
os.remove(file)

db = pw.SqliteDatabase(pw.Model)

class BaseModel(pw.Model):
    class Meta:
        database = db

class User(BaseModel):
    '''I define my User Class here'''

class Status(BaseModel):
    '''I define my Status Class here'''

def main():
    db.connect()
    db.execute_sql('PRAGMA foreign_keys = ON;')
    db.create_tables([
        User,
        Status])
 
   users = [
            (user1, test1, name1),
            (user2, test2, name3),
            (user3, test3, name3)]

    for account in users:
        try:
            with db.transaction():
                new_account = User.create(
                    user_id=account[0],
                    email=account[1],
                    user_name=account[2],
                    user_last_name=account[3])
                new_account.save()
    except Exception as e:

    status = [
            (status1, user1, text1),
            (status2, user2, text3),
            (status3, user3, text3)]

    for message in status:
        try:
            with db.transaction():
                new_status = Status.create(
                    status_id=message[0],
                    user_id=message[1],
                    status_text=message[2],
                )
            new_status.save()
        except Exception as e:

    db.close()

main()

当我运行它时,它给了我这个错误:

Traceback (most recent call last):
  File "C:\Documents\folder\network_model.py", line 105, in <module> 
func()
  File "C:\Documents\folder\assignment-03-parkertheoj\network_model.py", line 52, in func
db.connect()
  File "C:\Documents\folder\venv\lib\site-packages\peewee.py", line 3177, in connect
self._state.set_connection(self._connect())
  File "C:\Documents\folder\venv\lib\site-packages\peewee.py", line 3521, in _connect
conn = sqlite3.connect(self.database, timeout=self._timeout,
TypeError: expected str, bytes or os.PathLike object, not ModelBase

在我看来,peewee 模块本身有错误,但我不确定如何解决。任何帮助,将不胜感激! 谢谢!

python database sqlite peewee
1个回答
0
投票

你到底从哪里得到这个:db = pw.SqliteDatabase(pw.Model)

应该是

db = pw.SqliteDatabase('path/to/database-file.db')
© www.soinside.com 2019 - 2024. All rights reserved.