estates / init_db.py
David Hrachovy
Update
d2d3ca7
raw
history blame
1.88 kB
from peewee import *
from datetime import datetime
from playhouse.sqlite_ext import *
# Initialize database
json_structure = "JSON column with hash with keys 'title': str, official title of the project, 'deposit': int, initial deposit (in percentage), 'min_price': int, lowest available property price with VAT. It should not be booked or sold., 'city': str, city of the project, 'lat': float, gps coordinates of the project, 'lng': float, gps coordinates of the project, 'start_year': int, year of construction start, 'end_year': int, estimated year of construction end. Some values can be null/unknown"
db = SqliteExtDatabase('estate.db', pragmas=(
('cache_size', -1024 * 64), # 64MB page-cache.
('journal_mode', 'wal'), # Use WAL-mode (you should always use this!).
('foreign_keys', 1))) # Enforce foreign-key constraints.
# Define the Project model
db_description = f"""Table "project" - list of real estate projects (novostavby) in Czech Republic
url: url of the project.
structure: {json_structure}.
content: contents of the website.
created_at: date and time of creation.
"""
class Project(Model):
url = CharField(unique=True)
structure = JSONField(null=True)
content = TextField(null=True)
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!")
# Add some test data if needed
test_urls = [
'https://brnojedna.cz/'
]
for url in test_urls:
Project.get_or_create(url=url)
print(f"Number of projects in database: {Project.select().count()}")
db.close()
if __name__ == "__main__":
init_database()