[PYTHON] Über die Datenverwaltung von Amboss-App-Server
Vorwort h2>
Es ist schön, die App mit "Amboss-App-Server" ausführen zu können, aber lassen Sie uns die "News Aggregater" -App ausführen, die auf der Website [Anvil](https://anvil.works/) erstellt wurde. Trotzdem scheint es sich nicht reibungslos zu bewegen. .. ..
Ich habe etwas recherchiert.
Prämisse h4>
- Sie haben bereits die App [News Aggregator](https://anvil.works/learn/tutorials/database-backed-apps) in Anvil erstellt.
Umgebung h4>
--Ubuntu 20.04 LTS Japanischer Remix
- Hyper-V Manager 10.0.18362.1
- anvil-app-server v1.1
Laden Sie die News Aggregator-App herunter und führen Sie sie aus h2>
Nachdem Sie die App erstellt haben, können Sie sie mit dem Befehl "git clone" aus "Verlauf anzeigen" herunterladen.
Klicken Sie auf "Verlauf anzeigen"
Klicken Sie auf "Mit Git klonen"
Kopieren Sie die Zeile "git clone ssh: // ~" und führen Sie sie mit dem Befehl aus.
git clone ssh://[email protected]:2222/324IEWAMVBYU2Y77.git News_Aggregater
- "XXXX" ist die E-Mail-Adresse des auf der Anvil-Website registrierten Kontos.
- Wenn die Zwei-Faktor-Authentifizierung aktiviert ist, müssen Sie den öffentlichen SSH-Schlüssel verwenden. Wenn Sie ihn verwenden, entfernen Sie die zweistufige Authentifizierung vorübergehend. Ich denke, es wird einfacher, wenn Sie den öffentlichen Schlüssel in Git registrieren.
Starten Sie die Anwendung mit "Amboss-App-Server".
anvil-app-server --app News_Aggregater
Greifen Sie mit einem Browser auf "http: // localhost: 3030" zu.
Plötzlich ein Fehler.
Probleme h2>
In der News Aggrigator-App wird die "Kategorie" des Artikels im Voraus in der "Kategorien" -Tabelle registriert und von dort ausgewählt. Da die App jedoch keine Tabellendaten enthält, werden "leere Daten" angezeigt. Wird zu einem Fehler führen.
Greifen Sie mit pgadmin4 h2> auf PostgreSQL des Amboss-App-Servers zu
`anvil-app-server` enthält einen eigenen PostgreSQL-Server, greifen Sie also darauf zu.
- Username : postgres
--Password: (das Verzeichnis, in dem der Amboss-App-Server ausgeführt wurde) /.anvi-data/postgres.password
--Port: (Verzeichnis, in dem der Amboss-App-Server ausgeführt wurde) /.anvi-data/db/postmaster.opts
Anscheinend gibt es jedoch weder eine Artikel- noch eine Kategorietabelle, die die App benötigen sollte.
Wenn Sie sich den Inhalt der vorhandenen Tabelle ansehen, finden Sie die Informationen der von der Anwendung erstellten Tabelle vorerst in der Tabelle app_storage_tables
.
Wenn Sie sich Daten mit der todo-App erstellen, die mit dem Befehl create-anvil-app
erstellt werden kann, stellt sich heraus, dass Daten zur Tabelle app_storage_data
hinzugefügt wurden.
Was meinst du mit h2>?
Von Oben,
- Die von der App verwendeten Tabelleninformationen werden in der Tabelle
app_storage_tables
im JSON-Format gespeichert.
- Wenn Sie über eine App auf Daten zugreifen, greifen Sie auf die Daten im JSON-Format in der Tabelle "app_storage_data" zu, basierend auf den Informationen in der Tabelle "app_storage_tables".
Es ist nicht undenkbar, eine Metatabelle unter dem Gesichtspunkt zu verwenden, dass die Datenschicht und die Logikschicht unabhängig von der Art der erstellten Anwendung abgeglichen werden können, aber es ist ein Mechanismus, der die Herzen von Amateuren frustriert.
Andere h2>
Als ich sehen konnte, um welche Art von Datenverwaltung es sich handelt, ging ich zurück zu Anvils Website und lud die Daten herunter, um die Daten zu importieren.
Die heruntergeladenen Daten können jedoch nicht einfach importiert werden.
Im Fall der "Kategorien" -Tabelle von News Aggrigator diesmal
ID |
name |
[65114][57547127] |
entertainment |
[65114][57547131] |
business |
[65114][57547132] |
travel |
[65114][57547134] |
sport |
Die Daten im JSON-Format müssen in einer Form geschrieben werden, die mit der Metatabelle der lokalen Datenbank übereinstimmt.
- Die ID-Spalte enthält "wahrscheinlich" Informationen, wenn sich Daten auf dem von Anvil gehosteten Server befinden. Daher scheint dies in der lokalen Datenbank nicht sehr sinnvoll zu sein. Intuitiv denke ich, dass es um Tabellen-ID und Zeilen-ID geht.