Grund
Kürzlich habe ich an einem kleinen Tool gearbeitet, das Online-Seiten crawlen muss. Dann analysieren. Geben Sie die Ergebnisse in die Datenbank ein.
Da ich wusste, dass Python in diesem Bereich Vorteile hat, habe ich mich dafür entschieden.
Da ich MySQL auf einem Server installiert habe, verwende ich es natürlich. Beim Betrieb der Datenbank bin ich auf viele Probleme gestoßen. Zur gegenseitigen Ermutigung werde ich diese hier aufzeichnen.
Aufruf von MySQL in Python
Baidu kann Datenbankoperationen über MySQLdb ausführen. Sehen Sie sich die Dokumentation an und erfahren Sie, dass Python ein MySQL bereitstellt, das die C-Sprach-API von MySQL direkt implementiert. MySQLdb ist eine Kapselung auf höherer Ebene und daher bequemer zu verwenden. Wir können MySQL verwenden, aber eine bessere Möglichkeit ist die Verwendung von MySQLdb
Während der Installation aufgetretene Probleme
Sie können es von dieser Seite herunterladen http://sourceforge.net/projects/mysql-python/ Bei der neuesten Version von MySQLdb kann es beim Ausführen der Installation nach der Dekomprimierung zu Problemen kommen.
Beim Ausführen der Installation über python setup.py build wird angezeigt, dass kein Modul namens „setuptools“ vorhanden ist.
Lösung: Installieren Sie es
sudo apt-get install python-setuptools
Führen Sie es erneut aus. Möglicherweise erhalten Sie immer noch die Fehlermeldung „mysql_config nicht gefunden“
Zu diesem Zeitpunkt müssen wir „mysqld-dev“ installieren
sudo apt-get install libmysqld-dev
Es kann immer noch passieren, wenn Sie es erneut ausführen. Es ist ein Fehler aufgetreten. Etwas in der Art: „
‚MySQL‘-Erweiterung erstellen gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,3, ' final',0) -Dversion=1.2.3 -I/usr/include/mysql -I/usr/include/python2.7 -c mysql.c -o build/temp.linux-i686-2.7/mysql.o - DBIG_JOINS=1 -fno-strict-aliasing -DUNIV_LINUX -DUNIV_LINUX In Datei enthalten von mysql.c:29:0: pymemcompat.h:10:20: Schwerwiegender Fehler: Python.h: Keine solche Datei oder kein solches Verzeichnis
Lösung
sudo apt-get install python-dev
In diesem Schritt werden einige Entwicklungs-Header-Dateien für Python installiert.
Grundsätzlich treten nach den ersten drei Methoden keine weiteren Probleme mehr auf.
Aber gehen Sie davon aus, dass MySQL von Ihnen selbst installiert wird. Darüber hinaus wird ein Fehler gemeldet, wenn die lib-Datei nicht unter /usr/local/lib platziert wird.
Die Lösung besteht darin, die Datei mit diesem Ordner zu verknüpfen oder die Datei /etc/ld.so.cnf des Systems zu ändern und den Ordner abzulegen, in dem sich unsere Bibliothek befindet. Beide Methoden funktionieren. Lassen Sie es dann in ldconfig einfach wirksam werden.
Zum Beispiel verwenden wir die erste Methode ln -s /usr/local/mysql/lib/mysql/libmysqlclient* /usr/lib
Tatsächliche Verwendung
Einführung in die MySQLdb-Bibliothek
MySQLdb importieren
Mit Datenbank verbinden
conn=MySQLdb.connect(host="localhost",user="root",passwd="sa",db ="mytable ",charset="utf8")
Die bereitgestellte Verbindungsmethode wird verwendet, um eine Verbindung mit der Datenbank herzustellen, empfängt mehrere Parameter und gibt das Verbindungsobjekt zurück
Führen Sie die Anweisung aus und erhalten Sie das Ergebnis
Cursor=conn.cursor() n=cursor.execute(sql,param)
Zuerst verwenden wir das Verbindungsobjekt, um ein Cursorobjekt zu erhalten Verwenden Sie die vom Cursor bereitgestellten Methoden. Diese Methoden umfassen zwei Hauptkategorien: 1. Ausführen des Befehls, 2. Empfangen des Rückgabewerts
Wird später ausführlich besprochen. Hier unbekannt
Das Ende. Um eine Datenbankverbindung
zu schließen, müssen Sie das Zeigerobjekt und das Verbindungsobjekt separat schließen. Sie haben Methoden mit demselben Namen
cursor.close()
conn .close()
Häufig verwendete Operations-API
Unterstützung für Transaktionsoperationen, Standardmethoden commit() commit
rollback() rollback
Methode, die von verwendet wird Cursor zum Ausführen von Befehlen:
callproc(self, procname, args): Wird zum Ausführen der gespeicherten Prozedur verwendet. Die empfangenen Parameter sind der Name der gespeicherten Prozedur und die Parameterliste, und der Rückgabewert ist die Anzahl der betroffenen Zeilen
execute( self, query, args): Führen Sie eine einzelne SQL-Anweisung aus. Die empfangenen Parameter sind die SQL-Anweisung selbst und die verwendete Parameterliste. Der Rückgabewert ist die Anzahl der betroffenen Zeilen
executemany (self, query, args): Führen Sie die einzelne SQL-Anweisung aus, aber führen Sie die Parameter in der Parameterliste wiederholt aus. Der Rückgabewert ist die Anzahl der betroffenen Zeilen. nextset(self): Zum nächsten Ergebnissatz wechseln
Vom Cursor verwendete Methode zum Empfangen des Rückgabewerts:
fetchall(self): Empfangen aller zurückgegebenen Ergebniszeilen
fetchmany(self, size=None): Empfangen der zurückgegebenen Ergebniszeilen dass der Wert von size größer ist als die zurückgegebenen Ergebniszeilen.
fetchone(self): Gibt eine Ergebniszeile
zurück. value, mode='relative': Bewegen Sie den Zeiger auf eine bestimmte Zeile. Wenn mode='relative', bedeutet dies, dass der Wertbalken von der aktuellen Zeile verschoben wird. Wenn mode='absolute', bedeutet dies, dass der Wertbalken von der aktuellen Zeile verschoben wird erste Zeile der Ergebnismenge.
Fügen Sie am Ende einen Satz ein: 🎜>
Der Computer wurde auf Ubuntu 14.04 aktualisiert und erneut installiert. Das vorherige Blog-Repository war verschwunden und ich habe es von Github zurückgezogen wieder. Etwas ist schief gelaufen. Ich habe die Datei gelöscht und dieser Artikel war fast verschwunden. Es ist einfach gut, dass ich diesen Artikel jetzt lesen kann.