Verwenden Sie MySQL, um die von der URL zurückgegebenen HTTP-GET-Anforderungsdaten aufzuzeichnen

Verwenden Sie MySQL, um die von der URL zurückgegebenen HTTP-GET-Anforderungsdaten aufzuzeichnen

Geschäftsszenarioanforderungen und Implementierungslogikanalyse

Im Geschäftsleben stoßen wir häufig auf Situationen, in denen wir HTTP GET verwenden müssen, um Daten anzufordern. Das von der HTTP-Anforderung zurückgegebene Ergebnis lautet beispielsweise wie folgt:

Wenn wir diese Daten also in MySQL speichern möchten, wie können wir das tun?

Tatsächlich ist der Aufruf der httplib- und MySQLdb-Pakete von Python sehr einfach zu implementieren. httplib ist für das Abrufen der URL-Rückgabe verantwortlich und MySQLdb für den Betrieb der MySQL-Datenbank. Das Folgende ist ein logisches Diagramm der Beziehung:

Beginnen wir also mit der Code-Entwicklung:

Vorbereitung des Python-Abhängigkeitspakets

Python muss mindestens die folgenden Pakete verwenden. Informationen zur Installation von MySQLdb-Abhängigkeitspaketen finden Sie unter Python-Installation des MySQL-Abhängigkeitspakets mysql-python

# Dies ist die Python-Texteditor-Schnittstelle #!/usr/bin/python
# Kodierung=utf-8
httplib importieren
JSON importieren
Importzeit
MySQLdb importieren

Holen Sie sich die URL-Anforderungsrückgabe mithilfe von httplib

Das httplib-Paket unterstützt die folgenden Methoden und Funktionen:

url = "http://www.testtesttest.com/mobile/kit?token=yyyyyyyyyy&key=tttttt&size=1" #Spezifischer URL-Link conn = httplib.HTTPConnection("www.testtesttest.com")
conn.request(method="GET", url=url) #Geben Sie die GET-Methode und das URL-Objekt an response = conn.getresponse() #Erstellen Sie ein Antwortobjekt res = response.read() #Lesen Sie den von der URL zurückgegebenen Inhalt # Verwenden Sie die Methode json.loads, um JSON in ein Python-Objekt zu dekodieren json_repose = json.loads(res)
Daten = json_repose['Daten']

An diesem Punkt werden alle von der HTTP-Anforderung zurückgegebenen Informationen im Objekt res gespeichert. Da die Anforderung eine JSON-Zeichenfolge zurückgibt, verwenden wir die Methode json.loads, um sie zu analysieren.

Es ist zu beachten, dass wir den von der Anforderung zurückgegebenen JSON-Inhalt schließlich im Python-Objekt speichern. Sobald die Daten in ein Array oder Tupel konvertiert sind, können wir Pythons eigene Funktionen verwenden, um sie zu analysieren oder andere Operationen daran durchzuführen.

Analysieren von per URL-Anforderung zurückgegebenem JSON mit Python

# Hier definieren wir eine Funktion zum Parsen von JSON
def data_list_analyze(i):
 data_dict = Daten[i]
 Status = Datendict['Status']
 devi_id = data_dict['devi_id']
 Aktualisierungszeit = Zeit.strftime("%Y-%m-%d %H:%M:%S", Zeit.localtime(data_dict['Aktualisierungszeit']))
 actived_time = Zeit.strftime("%Y-%m-%d %H:%M:%S", Zeit.localtime(data_dict['actived_time']))
 gibt Geräte-ID, IMEI, Gerätetyp und Aktivierungszeit zurück

Python stellt eine Verbindung zur Datenbank her und schreibt Daten

Nachfolgend sehen Sie ein Beispiel für die Verbindung mit der Datenbank:

# Öffnen Sie die Datenbankverbindung, geben Sie die Datenbank-IP, den Benutzernamen, das Passwort und den Namen der Verbindungsbibliothek an db = MySQLdb.connect("192.168.xxx.xxx", "db_user", "db_password", "db_database", charset='utf8')
# Verwenden Sie die Methode cursor(), um den Vorgang Cursor zu erhalten cursor = db.cursor()
# Tabelle erstellen SQL-Anweisung SQL = """Tabelle erstellen, falls nicht vorhanden `gergsmart_list`(
`devi_id` varchar (255) NICHT NULL KOMMENTAR 'IMEI, // IMEI des Hardwaregeräts ',
`imei` varchar(255) COMMENT 'ICCID, //Hardwaregerät SIM-Karte',
`device_type` varchar(255) COMMENT 'Gerätetyp',
`actived_time` datetime KOMMENTAR 'Erste Aktivierungszeit',
PRIMÄRSCHLÜSSEL(`devi_id`)
)ENGINE=INNODB STANDARD-CHARSET=utf8;
"""
# Verwenden Sie die Execute-Methode, um SQL-Anweisungen auszuführen und Tabellen zu erstellen cursor.execute(sql)
# Daten einfügen SQL-Anweisung insert_sql = "insert into `gergsmart_list` \
(Geräte-ID, IMEI, Gerätetyp, Aktivierungszeit) \
Werte (%s, %s, %s, %s,)"

Aus dem Obigen können wir ersehen, dass wir die von Python analysierten Objekte devi_id, imei, device_type und actived_time in die Insert-Anweisung von MySQL einfügen können, sodass wir die Operation „Daten von URL abrufen, in Python-Objekt speichern und dann Python-Objekt in MySQL-Datensatz einfügen“ erreichen können.

Zusammenfassend können wir Python eigentlich als ein Relay betrachten, das URL-Anforderungsrückgaben empfängt und sie in MySQL schreibt. Unter diesen ist httplib für Empfangsvorgänge und MySQLdb für Schreibvorgänge verantwortlich.

Ergänzung: Zeitüberschreitung bei MySQL-Anfrage! Was ist der Unterschied zwischen der Erweiterung auf Get- und Post-Anfragen? Super detailliert! Ein Artikel reicht aus, um alle Probleme zu lösen! !

Ändern Sie einfach die Datenbankverbindungsadresse von 127.0.0.1 in localhost! Bewährt und wirksam! !

Nachdem ich viele Informationen konsultiert habe, habe ich die Unterschiede zwischen Get-Anfragen und Post-Anfragen zusammengefasst.

Es wurden folgende Schlussfolgerungen gezogen:

Es ist bekannt, dass die Parameter der Get-Anfrage direkt in der URL angezeigt werden, was eine geringe Sicherheit bietet. Die Parameter der Post-Anfrage werden im Textkörper gespeichert, was sicherer ist. Sehen wir uns als Nächstes eine etwas umfassendere Erklärung an.

Schauen wir uns zunächst die Erklärungen unserer Vorgänger an.

1. Was ist der Unterschied zwischen Get- und Post-Anfragen:

„Get“ dient zum Abrufen von Daten vom Server und „Post“ zum Senden von Daten an den Server.

Get fügt die Parameterdatenwarteschlange zur URL hinzu, auf die das ACTION-Attribut des übermittelten Formulars verweist. Der Wert entspricht nacheinander jedem Feld im Formular und ist in der URL zu sehen. Post verwendet den HTTP-Post-Mechanismus, um die verschiedenen Felder des Formulars und deren Inhalte in den HTML-HEADER zu platzieren und sie an die URL-Adresse zu übertragen, auf die das ACTION-Attribut zeigt. Dieser Vorgang ist für den Benutzer unsichtbar.

Für die Get-Methode verwendet der Server Request.QueryString, um den Wert der Variablen abzurufen. Für die Post-Methode verwendet der Server Request.Form, um die übermittelten Daten abzurufen.

Die von get übertragene Datenmenge ist gering und kann nicht größer als 2 KB sein. Die per Post übermittelten Datenmengen sind groß und werden grundsätzlich als uneingeschränkt preisgegeben. Theoretisch beträgt die Maximalmenge jedoch 80 KB in IIS4 und 100 KB in IIS5.

Die Sicherheit beim Empfangen ist sehr gering, während die Sicherheit beim Senden höher ist.

GET-Anfragen können zwischengespeichert werden. POST-Anfragen werden nicht zwischengespeichert.

GET-Anfragen werden im Browserverlauf gespeichert. POST-Anfragen werden nicht im Browserverlauf gespeichert.

GET-Anfragen können mit Lesezeichen versehen werden. POST-Anfragen können nicht mit Lesezeichen versehen werden.

GET-Anfragen können nur URL-kodiert sein (application/x-www-form-urlencoded). POST unterstützt mehrere Kodierungen (application/x-www-form-urlencoded oder multipart/form-data. Für Binärdaten werden mehrere Kodierungen verwendet.)

Der intuitivste Unterschied besteht darin, dass GET Parameter in die URL einschließt und POST Parameter über den Anforderungstext übergibt.

Schauen wir uns als nächstes die offizielle Erklärung an:

2. w3schools unterscheidet ebenfalls zwischen beiden und gibt eine offizielle Antwort

GET ist harmlos, wenn der Browser zurückfällt, während POST die Anforderung erneut übermittelt.

Die von GET generierte URL kann mit einem Lesezeichen versehen werden, bei POST hingegen nicht.

GET-Anfragen werden vom Browser aktiv zwischengespeichert, POST-Anfragen jedoch nicht, sofern sie nicht manuell festgelegt werden.

GET-Anfragen können nur URL-codiert werden, während POST mehrere Codierungsmethoden unterstützt.

Die Parameter der GET-Anfrage bleiben vollständig im Browserverlauf erhalten, die Parameter im POST bleiben jedoch nicht erhalten.

Die in der URL einer GET-Anfrage übermittelten Parameter sind in ihrer Länge begrenzt, bei einer POST-Anfrage jedoch nicht.

Für Parameterdatentypen akzeptiert GET nur ASCII-Zeichen, während POST keine Einschränkungen hat.

GET ist weniger sicher als POST, da die Parameter direkt in der URL angezeigt werden und daher nicht zum Übergeben vertraulicher Informationen verwendet werden können.

GET-Parameter werden über die URL übergeben und POST-Parameter werden in den Anforderungstext eingefügt.

GET generiert ein TCP-Paket; POST generiert zwei TCP-Pakete.

Erstellen Sie eine Zusammenfassung auf der Grundlage der oben genannten und der konsultierten Informationen

HTTP ist ein auf TCP/IP basierendes Protokoll, das beschreibt, wie Daten im World Wide Web kommuniziert werden. Die zugrunde liegende Schicht von HTTP ist TCP/IP. Daher ist die zugrunde liegende Schicht von GET und POST auch TCP/IP, das heißt, GET/POST sind beide TCP-Verbindungen. GET und POST können genau dasselbe tun. Sie müssen einen Anforderungstext zu GET und URL-Parameter zu POST hinzufügen, was technisch machbar ist.

Sowohl Post-Requests als auch Get-Requests sind HTTP-Request-Methoden. Es gibt keinen wesentlichen Unterschied zwischen ihnen. Die zugrundeliegende Implementierung basiert auf dem TCP/IP-Protokoll. Da es jedoch verschiedene Möglichkeiten gibt, Anfragen zu stellen, unterteilt und reguliert HTTP die Anfragemethoden, was zu einer Arbeitsteilung und Unterscheidung zwischen der Verarbeitung von Get- und Post-Anfragen führt.

Darüber hinaus wurde ein weiterer Unterschied festgestellt: GET generiert ein TCP-Paket; POST generiert zwei TCP-Pakete. Bei GET-Anfragen sendet der Browser den HTTP-Header und die Daten zusammen und der Server antwortet mit 200 (Daten zurückgeben). Bei POST sendet der Browser zuerst den Header, der Server antwortet mit 100 continue, der Browser sendet dann die Daten und der Server antwortet mit 200 ok (Daten zurückgeben).

GET und POST haben eine eigene Semantik und können nicht gemischt werden.

Untersuchungen zufolge kann unter guten Netzwerkbedingungen der Unterschied zwischen der Zeit, die zum Senden eines Pakets benötigt wird, und der Zeit, die zum Senden zweier Pakete benötigt wird, grundsätzlich vernachlässigt werden. Bei schlechten Netzwerkbedingungen bietet TCP mit zwei Paketen einen großen Vorteil bei der Überprüfung der Integrität von Datenpaketen.

Nicht alle Browser senden das Paket zweimal im POST, Firefox sendet es nur einmal.

Zusammenfassung:

„Die maximale Datenmenge, die von GET übermittelt wird, beträgt 1024 Byte.“ Da GET Daten über eine URL übermittelt, hängt die Datenmenge, die GET übermitteln kann, direkt von der Länge der URL ab. Tatsächlich gibt es kein Problem mit der Obergrenze der URL-Parameter, und die HTTP-Protokollspezifikation begrenzt die Länge von URLs nicht. Diese Einschränkung wird von bestimmten Browsern und Servern auferlegt. Der Internet Explorer begrenzt die URL-Länge auf 2083 Byte (2K+35). Für andere Browser wie Netscape, FireFox usw. gibt es theoretisch keine Längenbeschränkung und die Beschränkung hängt von der Unterstützung des Betriebssystems ab. Beachten Sie, dass sich diese Beschränkung auf die Länge der gesamten URL bezieht und nicht nur auf die Länge Ihrer Parameterwertdaten.

Theoretisch gibt es keine Größenbeschränkung für POST, und die HTTP-Protokollspezifikation schreibt auch keine Größenbeschränkung vor. Es ist ungenau zu sagen, dass „es eine Größenbeschränkung von 80 K/100 K für POST-Daten gibt“. Es gibt keine Beschränkung für POST-Daten. Was sie begrenzt, ist die Verarbeitungsleistung des Verarbeitungsprogramms des Servers. Für ASP-Programme gilt eine Datenlängenbeschränkung von 100 KB, wenn das Request-Objekt jedes Formularfeld verarbeitet. Wenn Sie jedoch Request.BinaryRead verwenden, gibt es keine solche Einschränkung.

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Python-Methode zum Senden von HTTP-Anfragen und Empfangen von HTTP-Antworten über Get und Post
  • Python sendet eine HTTP-Anfrage, um ein JSON-Beispiel zu analysieren und zurückzugeben
  • Der Java-Hintergrund initiiert eine Get-Anfrage, um die Antwortdaten abzurufen

<<:  JavaScript imitiert Xiaomi-Karusselleffekt

>>:  Neue Funktionen von Spring Boot 2.4: Detaillierte Erläuterung des Prozesses zum Erstellen eines Docker-Image mit nur einem Klick

Artikel empfehlen

Ursachen und Lösungen für MySQL-Deadlocks

Die Datenbank ist wie das Betriebssystem eine gem...

Über die praktische Anwendung von HTML-Mailto (E-Mail) sprechen

Wie wir alle wissen, ist „mailto“ ein sehr praktis...

Vue implementiert die Benutzeranmeldungsumschaltung

In diesem Artikelbeispiel wird der spezifische Co...

Teilen Sie 20 JavaScript-Einzeilencodes

Inhaltsverzeichnis 1. Holen Sie sich den Wert des...

CSS-Tipps zur Implementierung der Chrome-Tab-Leiste

Dieses Mal schauen wir uns ein Navigationsleisten...

So erhalten Sie USB-Scannerdaten mit js

In diesem Artikel wird der spezifische Prozess zu...

Detaillierte Erläuterung der Wissenspunkte zu Linux Netfilter/Iptables

Netzfilter Netfilter ist ein Paketverarbeitungsmo...

So passen Sie die Textgröße im Webdesign an: Kleiner Text, großes Erlebnis

Mit der Verbreitung mobiler Endgeräte wie dem iPa...

Verwenden von Apache ab zum Durchführen von HTTP-Leistungstests

Mac wird mit Apache-Umgebung geliefert Öffnen Sie...

Implementierung eines einfachen Altersrechners auf Basis von HTML+JS

Inhaltsverzeichnis Vorwort Demonstrationseffekt H...

So zeigen Sie Linux-SSH-Dienstinformationen und den Ausführungsstatus an

Es gibt viele Artikel zur SSH-Serverkonfiguration...