from peewee import CharField, IntegerField, Field, Model, DateTimeField import datetime from sqlalchemy import MetaData, inspect from peewee import SqliteDatabase # def read(): # attributes = [attribute for attribute in Users.__dict__.keys() if not attribute.startswith("_")] # # # Перебираємо всі атрибути # for attribute in attributes: # # Друкуємо ім'я та значення атрибута # print(f"{attribute}: {getattr(Users, attribute)}") # metadata = MetaData() # inspector = inspect(metadata) # # for table in metadata.tables: # if table.name == "Users": # for column in table.columns: # column_metadata = ColumnMetadata( # name=column.name, # data_type=column.type.python_type.__name__, # null=column.nullable, # primary_key=column.primary_key, # table=table.name, # default=column.default # ) # # print(column_metadata.__str__()) db = SqliteDatabase('database.db') class BaseModel(Model): class Meta: database = db class ArrayField(Field): field_type = 'scills' def db_value(self, value): if isinstance(value, list): return ','.join(value) return value def python_value(self, value): if isinstance(value, str): return value.split(',') return value def check_db(): if db.table_exists("users"): print("База даних існує") else: print("База даних не існує") class Users(BaseModel): class Meta: database = db id = IntegerField(primary_key=True, unique=True) user_id = IntegerField(unique=True) login = CharField(max_length=32, unique=True) password = CharField(max_length=32) coins=IntegerField(default=0) level = IntegerField(null=True,default=5) status = CharField(max_length=32, null=True,default="учасник") skills = ArrayField(null=True,default="[]") full_name = CharField(max_length=256, null=True) grade = CharField(max_length=8, null=True) description = CharField(max_length=2048, null=True) create_account = DateTimeField(null=True) if __name__ == '__main__': check_db() db.create_tables([Users]) user1 = Users.create( user_id=1, password="qazwsxedc123", login="johndoe", level=5, status="учасник", skills=["python", "sql", "javascript"], full_name="John Doe", grade="A+", description="A skilled software developer with experience in Python, SQL, and JavaScript.", create_account=datetime.datetime.now(), ) sb=db.get_columns("Users") print(sb,"\n\n\n\n")