MySQL-TutorialSpalte Python-Full-Stack-Erklärung der Datenbank
Empfohlen (kostenlos): MySQL-Tutorial
Drei Hauptaspekte:
1.Linux-Terminalbefehl
2.MySQL-Anweisung
3.Python-Aufruf
Terminalbefehl:
vi Texteditor
cat /etc/password |. grep "username" Benutzertabelle abrufen
sudo -i Get Root-Rechte
sudo apt-get install python3-pip Installiere pip3
sudo pip3 install pymysql Installiere MySQL
sudo apt-get install mysql-server Installiere den Server
sudo apt-get install mysql-client Installiere den Client
TSudo APT-get Update Leseliste Speichern unter/var/lib/APT/Listssudo APT-Get Upgrade und Update Sudo /etc/init.d/mysql Status sudo/ETC /init.d/mysql stop / etc/ MySQL -h Hostadresse -u Benutzername -p Passwort aus 1. Rootchmod 644-Dateinamen abrufen 3. Geben Sie das Verzeichnis der Konfigurationsdatei ein tCP ETC/MSQL.CNF/MySQLD.CNF.BAK 4. Backup Subl mysqld.cnf 5.vi Open Source-Datei [mysqld] VerzeichnisCharacter_Set_SERVER = UTF8 6. Befehle hinzufügen
/ETC/ETC/ init .d/mysqlmysqldump -u user -p Quellbibliotheksname> ~/xxx.sql ' Name 2. Eine einzelne Bibliothek sichern 备 -b Bibliothek 1 Bibliothek 2.. 3. Mehrere Bibliotheken sichern2 Bibliotheksname Tabelle 1 2 ... 4. Sichern Sie die angegebene BibliothekstabelleDatenwiederherstellung:
Mysql -UROOT -P & LT; Zielbibliotheksname xxx.sql 1. Stellen Sie die Sicherungsbibliothek wieder her Mysql -UROOT -P —ONE -DataBase-Zielbibliotheksname & lt; cd CD /etc/mysql/mysql.conf.d/ 2.cd zum MySQL-Verzeichnis vi mysqld.cnf 3. Öffnen Sie die Standard-IP und kommentieren Sie sie aus#bind-address = 127.0.0.1 4. Speichern
/etc/init. D/MySQL Restart 5. Dienst neu startenAutorisierter Benutzer:
Autorisierte Liste auf Bibliothek gewähren. an „tiger“@„%“ identifiziert durch „123“ mit BerechtigungslistePython3-Modulinstallation:
Modulname: pymysql
Online: sudo pip3 install pymysqlOffline: pymysql-0.7.11 .tar.gz $ tar -zxvf pymyql-0 .7.11.tar .gz $ cd pymysql-0.7.11$ sudo python3 setup.py install
Überprüfung: $ python3 $.py thon3; pymysql importieren Modulinstallation:
Modulname: MySQLdb
Installation: sudo pip install mysql-python
sqlalchemy Framework-Installation:Online: sudo pip3 install sqlalchemy
Offline: $ tar -zxvf SQLAlchemy-1.2. 10.tar.gz
$ cd SQLAlchemy-1.2.10
$ sudo python3 setup.py install
Überprüfung: $ python3
>>> import sqlalchemy
> ;>>
Pymysql-Verwendung:aus Pymsql-Import * 1. Stellen Sie eine Datenbankverbindung her
c = db.cursor()) 2. Erstellen Sie eine Cursorobjekt
c.execute(“insert….”) 4. An die Datenbank senden
c.close() Schließen :
7.connect-Objekt:
db = pymysql.connect (Parameterliste)
1. Host: Hostadresse, localhost
2. Port: Portnummer, Standard 3306
3. Benutzer: Benutzername
4. Passwort: Passwort
5. Datenbank: Bibliothek
6. Zeichensatz: Kodierungsmethode, es wird empfohlen, utf8 zu verwenden
8.Methode zum Verbinden von Objekten:
Datenbankverbindungsobjekt (db) Methode
1. db.close() schließt die Verbindung
2. db.commit() sendet sie zur Ausführung an die Datenbank
3. db.rollback() rollt zurück
4. cur = db.cursor( ) gibt das Cursorobjekt zurück, das zum Ausführen bestimmter SQL-Befehle verwendet wird SQL-Befehle
2. cur.close() Schließt das Cursorobjekt 3. cur.fetchone() Ruft das erste Datenelement in der Abfrageergebnismenge ab s n Artikel
((Datensatz 1), (Datensatz 2))
5. cur.fetchall() Alle Datensätze abrufen
ORM: orm (Object Relation Mapping Object Relational Mapping) Definition: Ordnen Sie das Objektmodell der MySQL-Datenbank zu
SQL-Befehl:
/var/lib/mysql
Variablen wie „autocommit“ anzeigen; Transaktion festschreiben (MySQL wird standardmäßig automatisch festgeschrieben)
rollback; Erstellen Sie eine Bibliothek
Bibliotheksnamen verwenden; # aufzeichnen
in Tabellennamen einfügen (Wert 1),…; Felddaten einfügen
wählen Sie * aus Tabellenname [wobei Bedingung] ; Name Feldnamendatentyp hinzufügen ; Tabellenname Feldnamen-Datentyp zuerst hinzufügen; Name des Feldnamens ändern, neuer Datentyp;
Aus Tabellennamen löschen, wobei Bedingung
create…t1();
…
references main table (referenzierter Feldname)on delete cascade Action
on Kaskadenaktion aktualisieren);
Fremdschlüssel hinzufügen:Tabelle ändern, Tabellenname hinzufügen,
Fremdschlüssel (Referenzfeld) verweist auf die Haupttabelle (referenziertes Feld)
bei Löschung …
bei Aktualisierung …
Kaskadenaktion :
restrict (Standard) erlaubt der Haupttabelle nicht, die Slave-Tabelle zu bedienen
cascade: Follow delete, update
set null: Der Slave-Tabellenwert ist NULL, nachdem die Master-Tabelle geändert wurde
Interner Link:Feldnamen aus Tabelle 1 auswählen
Inner-Join-Tabelle 2 unter Bedingung
Inner-Join-Tabelle 3 unter Bedingung...;
Externer Link:Abfrageergebnisse basierend auf der linken Tabelle anzeigen
Feldname aus Tabelle 1f auswählen LEFT JOIN Tabelle 2 ON-Bedingungen
LEFT JOIN Tabelle 3 ON-Bedingung ...;
Rechter LinkTabelle, um Abfrageergebnisse in der rechten Tabelle anzuzeigen
Datenimport:
Daten in Datei „Dateiname“ laden
in Tabelle Tabellenname
Felder, die mit „Trennzeichen“ abgeschlossen sindZeilen, die mit „n“ abgeschlossen sind;
Datenexport:wählen … aus Tabellenname
in Ausgabedatei " /var/lib/mysql-files/file name"Felder enden mit „Trennzeichen“
Zeilen enden mit „n“;
Datenwiederherstellung:Eine einzelne Bibliothek wiederherstellen
mysql -uroot - p < ; Zieldatenbankname xxx.sqlEine bestimmte Datenbank aus allen Datenbanksicherungen wiederherstellen (-one-database)
Mysql -uroot -p –one-database Zieldatenbankname < xxx.sql
Wiederherstellen: Tabelle löschen, überschreiben Tabellendatensätze löschen
Datensicherung:mysqldump -u user -p Quelldatenbankname> ~/xxx.sql–all-databases Alle Datenbanken sichern
Bibliotheksname Eine einzelne Datenbank sichern
- B Bibliothek 1 Bibliothek 2.. Mehrere Bibliotheken sichern
Bibliotheksnamenstabelle 1 Tabelle 2... Die angegebene Bibliothekstabelle sichern
Laufzeiterkennung:
Öffnen: Profilierung festlegen=1;
Schließen: Profilierung festlegen= 0; Abfrageausführungsdatensatz: Profilierungen anzeigen;
SQL-Abfrage:3.select … Aggregatfunktion aus Tabellenname
1.wo
2.group by…
4.have …
5 .sortieren nach …
6.limit …;
Abfrageverschachtelung:select … from table name where condition (select ….); A select name, gongji from sanguo
where
(country, gongji) in
(Land auswählen, max (gongji) aus Sanguo gruppieren nach Land); Gruppieren nach: Gruppieren Sie die Abfrageergebnisse
unterscheiden: Keine wiederholten Feldwerte anzeigen
Anzeigen von Suchmaschinen;
show Tabelle Tabellenname erstellen; Tabelle Tabellenname erstellen(...)engine=myisam:InnoDB-Funktionen (2 Dateien):
Sperren auf Zeilenebene, Unterstützung für Fremdschlüssel, Transaktionsoperationen
.frm (Tabellenstruktur, Index), .ibd (Tabellendatensätze)
MyISAM:
MyISAM-Funktionen ( 3 Dateien): { :
Sperre auf Tabellenebene: myisam
Sperre auf Zeilenebene: innodb
Optimierung:
1. Wählen Sie die entsprechende Speicher-Engine aus
3. Vermeiden Sie die Verwendung von != , NULL-Urteil oder Link,
wie führendes %, in, nicht in, * anstelle von Feldern,
Datentyp:
Datentyp: int Datentyp: Vorzeichenbehaftet (Standardeinstellung mit Vorzeichen): -128 ~ 127
Punkte (4 Bytes, 7. signifikant Ziffern)
Feldname float (m, n) m: Gesamtzahl der Ziffern n: Anzahl der Dezimalstellen
decimal Gleitkommazahl (28 signifikante Ziffern)
-- . Zahl n: Anzahl der Dezimalstellen
Vielfache von 9 in 4 Bytes packen Rest Bytes
1
3-4 2
5-6 3
7-9 4
Feldname Aufzählung (Wert 1, Wert 2…); durch Zahlen getrennt)
Datum: „JJJJ-MM-TT“
Uhrzeit: „HH:MM:SS“
DatumUhrzeit: „JJJJ-MM-TT HH:MM: SS“
Zeitstempel: „JJJJ -MM-TT HH:MM:SS“
Datumszeit: Gibt standardmäßig Null zurück, wenn kein Wert angegeben ist
Zeitstempel: Gibt standardmäßig die Systemzeit zurück, wenn kein Wert angegeben ist
Zeitfunktion
now() llll out to avg (field name): Ermitteln Sie den Durchschnittswert des Felds
sum (field name): sum
max (Feldname): Maximalwert
min (Feldname): Minimalwert
count (Feldname): Anzahl der Felder zählen
Operator: + – * / %
Zeitoperator
select * aus Tabellenname
wobei Feldname-Operator (Zeitintervall-Zeitintervalleinheit): 1 Tag |. 2Jahre | ; <=
Zeichenvergleich: = !=
Logischer Vergleich: und oder
Vergleich innerhalb des Bereichs:
1.wo Feldname zwischen Wert 1 und Wert 2 liegt
2.wo Feldname in (Wert 1, Wert 2,….)
3.wo Feldname nicht in (Wert 1, Wert 2,...)
Leer: wobei der Name null ist
Nicht leer: wobei der Name nicht null ist
NILL: Nullwert, kann nur mit is oder is not abgeglichen werden
"": leere Zeichenfolge, verwenden = oder != zum Abgleichen
Fuzzy-Vergleich:
wobei Feldname wie Ausdruck
Ausdruck
_ : Übereinstimmung mit einem einzelnen Zeichen
%: Übereinstimmung mit 0 mit mehreren Zeichen
NULL wird nicht gezählt
Sortierung: Reihenfolge von ASC |. DESC
Anzeige: Begrenzung der Startanzeigeposition, Anzahl der Elemente
Anzeige von n Datensätzen pro Seite, Anzeigeseite m:
Begrenzung (m-1)*n, n
MySQL interagiert mit Python
# mysqlpython.py # 导入mysql模块 from pymysql import * class MysqlPython: def __init__(self, database, # 库 host="127.0.0.1", # ip地址 user="root", # 用户名 password="123456", # 密码 port=3306, # 端口 charset="utf8"): # 字符集 self.host = host self.database = database self.user = user self.password = password self.port = port self.charset = charset def open(self): # 创建数据库链接函数 self.db = connect(host=self.host, database=self.database, user=self.user, password=self.password, port=self.port, charset=self.charset) self.cur = self.db.cursor() # 创建游标对象 def close(self): # 创建断开数据库链接 关闭游标函数 self.cur.close() self.db.close() def zhixing(self, sql, L=[]): # 创建pymysql.execute() 方法函数 try: self.open() # 链接数据库 self.cur.execute(sql, L) # 参数化执行SQL命令 self.db.commit() # 提交数据 print("ok") except Exception as e: self.db.rollback() # 出错取消提交 print("Failed", e) self.close() # 断开数据库链接 关闭游标 def all(self, sql, L=[]): try: self.open() self.cur.execute(sql, L) result = self.cur.fetchall() return result except Exception as e: print("Failed", e) self.close()
Datenbankbenutzeranmeldung
from mysqlpython import Mysqlpython from hashlib import sha1 uname = input("请输入用户名:") pwd = input("请输入密码:") # 用sha1给pwd加密 s1 = sha1() # 创建sha1加密对象 s1.update(pwd.encode("utf8")) # 指定编码 pwd2 = s1.hexdigest() # 返回16进制加密结果 sqlh = Mysqlpython("db4") select = "select password from user where username=%s;" result = sqlh.all(select, [uname]) # print(result) # (('7c4a8d09ca3762af61e59520943dc26494f8941b',),) if len(result) == 0: print("用户名不存在") elif result[0][0] == pwd2: print("登录成功") else: print("密码错误")
ORM sqlalchemy Framework
# 创建一张表 # 连接数据库的模块 from sqlalchemy import create_engine fromsqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer ,String engine = create_engine("mysql+pymysql://root:123456@localhost/db4", encoding="utf8") Base = declarative_base() # orm基类 class User(Base): # 继承Base基类 __tablename__ = "t123" id =Column(Integer, primary_key=True) name = Column(String(20)) address = Column(String(40))Base.metadata.create_all (engine)
Das obige ist der detaillierte Inhalt vonPython-Full-Stack-Einführung in die MySQL-Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!