From 60964f7f6e83fca658c256e5ab99cbe698a11acc Mon Sep 17 00:00:00 2001 From: Czechman Date: Sun, 16 Feb 2025 13:50:53 +0100 Subject: [PATCH] neue Version --- check_db.py | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/check_db.py b/check_db.py index 4285c42..c47c90d 100644 --- a/check_db.py +++ b/check_db.py @@ -5,7 +5,7 @@ from datetime import datetime from sqlalchemy import create_engine, Column, Integer, String, Float, DateTime, ForeignKey, Text from sqlalchemy.orm import declarative_base, relationship, sessionmaker -# Definiere dieselben Modelle, wie im Bundle-Erfassungsskript: +# Basis-Klasse (SQLAlchemy 2.0-konform) Base = declarative_base() class Bundle(Base): @@ -15,8 +15,11 @@ class Bundle(Base): human_name = Column(String) current_version_id = Column(Integer, ForeignKey('bundle_versions.id')) + # Beziehung zur aktuellen Version (explizit mit foreign_keys für current_version_id) current_version = relationship("BundleVersion", uselist=False, foreign_keys=[current_version_id]) - versions = relationship("BundleVersion", back_populates="bundle", foreign_keys='BundleVersion.bundle_id') + # Alle Versionen – hier verwenden wir einen lambda-Ausdruck, um die Spalte BundleVersion.bundle_id zu referenzieren + versions = relationship("BundleVersion", back_populates="bundle", foreign_keys=lambda: [BundleVersion.bundle_id]) + # Verkaufshistorie sales_history = relationship("BundleSalesHistory", back_populates="bundle") class BundleVersion(Base): @@ -24,10 +27,11 @@ class BundleVersion(Base): id = Column(Integer, primary_key=True) bundle_id = Column(Integer, ForeignKey('bundles.id')) version_hash = Column(String) - version_data = Column(Text) # als JSON-String + version_data = Column(Text) # Als JSON-String timestamp = Column(DateTime, default=datetime.utcnow) - bundle = relationship("Bundle", back_populates="versions") + # Hier geben wir explizit an, dass für diese Beziehung die Spalte bundle_id verwendet wird + bundle = relationship("Bundle", back_populates="versions", foreign_keys=[bundle_id]) class BundleSalesHistory(Base): __tablename__ = 'bundle_sales_history' @@ -39,12 +43,12 @@ class BundleSalesHistory(Base): bundle = relationship("Bundle", back_populates="sales_history") def main(): - # Verbindung zur vorhandenen SQLite-Datenbank + # Verbindung zur bereits vorhandenen SQLite-Datenbank engine = create_engine('sqlite:///bundles.db') Session = sessionmaker(bind=engine) session = Session() - # Alle Bundles abfragen + # Alle Bundles aus der Tabelle 'bundles' abfragen bundles = session.query(Bundle).all() if not bundles: print("Die Datenbank enthält noch keine Bundles.") @@ -55,26 +59,29 @@ def main(): print(f"Bundle-ID: {bundle.id}") print(f"Machine Name: {bundle.machine_name}") print(f"Human Name: {bundle.human_name}") + if bundle.current_version: print(f"Aktuelle Version (ID): {bundle.current_version.id}") print(f"Version Hash: {bundle.current_version.version_hash}") try: version_info = json.loads(bundle.current_version.version_data) - # Optional: gebe z. B. den 'human_name' oder weitere Felder aus - print(f"Version-Daten (gekürzt): {json.dumps(version_info, indent=2)[:300]} ...") + # Hier geben wir nur einen gekürzten Ausschnitt der Version-Daten aus + version_str = json.dumps(version_info, indent=2)[:300] + print("Version-Daten (gekürzt):") + print(version_str + " ...") except Exception: print("Version-Daten (roher Text):") print(bundle.current_version.version_data) print(f"Letzte Aktualisierung: {bundle.current_version.timestamp}") else: - print("Keine Version hinterlegt.") - - # Alle Versionen anzeigen + print("Keine aktuelle Version hinterlegt.") + + # Alle historischen Versionen ausgeben print("\nHistorische Versionen:") for version in bundle.versions: print(f" Version-ID: {version.id}, Timestamp: {version.timestamp}, Hash: {version.version_hash}") - - # Verkaufszahlen anzeigen + + # Verkaufszahlen ausgeben print("\nVerkaufshistorie:") if bundle.sales_history: for sale in bundle.sales_history: