Hey, I was casually trying to do some data creation with peewee, but I got this error.
AttributeError: 'SqliteDatabase' object has no attribute 'Infraction'
Under core/database.py I have:
import logging
import os
from peewee import *
from discord.enums import ExpireBehavior
from playhouse.shortcuts import model_to_dict, dict_to_model
from playhouse.sqlite_ext import RowIDField
from datetime import datetime
from playhouse.shortcuts import ReconnectMixin
from flask import Flask
from peewee import *
db = SqliteDatabase("data.db", pragmas={'foreign_keys': 1})
logger = logging.getLogger(__name__)
def iter_table(model_dict):
for key in model_dict:
if not db.table_exists(key):
db.connect(reuse_if_open=True)
db.create_tables([model_dict[key]])
logger.debug(f"Created table '{key}'")
db.close()
class BaseModel(Model):
class Meta:
database = db
class Infraction(BaseModel):
"""Stores our warnings."""
id = AutoField()
userID = TextField()
reason = TextField()
typeAction = TextField()
MuteTimeRelease = TextField(default = None)
ActiveMute = TextField(default=False)
app = Flask(__name__)
@app.before_request
def _db_connect():
db.connect()
@app.teardown_request
def _db_close(exc):
if not db.is_closed():
db.close()
tables = {"infraction": Infraction}
iter_table(tables)
----------------------------------------------------------------------------------------------------------------------------------
Then under core/functions.py I have:
from datetime import datetime, timedelta
import discord
from core import database
async def addEntry(self, ctx, target, reason, typeAction, MuteRelease = None, ActiveWarn = False):
database.db.connect(reuse_if_open=True)
warn: database.db.Infraction = database.db.Infraction.create(userID = target, reason = reason, typeAction = typeAction, MuteTimeRelease = MuteRelease, ActiveWarn = ActiveWarn)
warn.save()
database.db.close()
----------------------------------------------------------------------------------------------------------------------------------
I've tried renaming the SQLite object but I had no luck getting it to recognize that class.