Spaces:
Sleeping
Sleeping
| from peewee import * | |
| from datetime import datetime | |
| from playhouse.sqlite_ext import * | |
| import json | |
| # Initialize database | |
| db = SqliteExtDatabase('estate.db') | |
| db_description = """Table "project" - list of real estate projects (novostavby) in Czech Republic | |
| url: url of the project. | |
| title: title of the project | |
| deposit: percentage of payment before completion | |
| min_price: lowest available apartment price in CZK with VAT | |
| status: status of the project (preparation, selling, sold out) | |
| city: city of the project | |
| lat: GPS latitude coordinates | |
| lng: GPS longitude coordinates | |
| start_year: year of construction start | |
| end_year: estimated year of construction end | |
| developer: name of the construction company | |
| ignore: if True, the project does not have any apartments for sale | |
| Apartment prices are stored in separate columns for each type: | |
| price_1kk, price_2kk, price_3kk, etc. | |
| """ | |
| class Project(Model): | |
| # Basic information | |
| url = CharField(unique=True) | |
| title = CharField(null=True) | |
| # Financial information | |
| deposit = IntegerField(null=True) # percentage | |
| min_price = IntegerField(null=True) # CZK with VAT | |
| # Apartment prices by type | |
| price_1kk = IntegerField(null=True) | |
| price_2kk = IntegerField(null=True) | |
| price_3kk = IntegerField(null=True) | |
| price_4kk = IntegerField(null=True) | |
| price_5kk = IntegerField(null=True) | |
| price_6kk = IntegerField(null=True) | |
| price_7kk = IntegerField(null=True) | |
| price_8kk = IntegerField(null=True) | |
| price_9kk = IntegerField(null=True) | |
| price_10kk = IntegerField(null=True) | |
| price_1_1 = IntegerField(null=True) | |
| price_2_1 = IntegerField(null=True) | |
| price_3_1 = IntegerField(null=True) | |
| price_4_1 = IntegerField(null=True) | |
| price_5_1 = IntegerField(null=True) | |
| price_6_1 = IntegerField(null=True) | |
| price_7_1 = IntegerField(null=True) | |
| price_8_1 = IntegerField(null=True) | |
| price_9_1 = IntegerField(null=True) | |
| price_10_1 = IntegerField(null=True) | |
| # Project information | |
| status = CharField(null=True) | |
| city = CharField(null=True) | |
| lat = FloatField(null=True) | |
| lng = FloatField(null=True) | |
| start_year = IntegerField(null=True) | |
| end_year = IntegerField(null=True) | |
| developer = CharField(null=True) | |
| # Additional data | |
| ignore = BooleanField(null=True) | |
| content = TextField(null=True) # Keep raw content for reference | |
| structure = JSONField(null=True) # Keep JSON for backward compatibility | |
| created_at = DateTimeField(default=datetime.now) | |
| class Meta: | |
| database = db | |
| def init_database(): | |
| """Initialize the database and create tables""" | |
| print("Initializing database...") | |
| db.connect() | |
| db.drop_tables([Project]) | |
| db.create_tables([Project]) | |
| print("Created tables successfully!") | |
| db.close() | |
| if __name__ == "__main__": | |
| init_database() | |