Heim >Datenbank >MySQL-Tutorial >Python-Full-Stack-Einführung in die MySQL-Datenbank

Python-Full-Stack-Einführung in die MySQL-Datenbank

coldplay.xixi
coldplay.xixinach vorne
2020-12-17 10:38:482312Durchsuche

MySQL-TutorialSpalte Python-Full-Stack-Erklärung der Datenbank

Python-Full-Stack-Einführung in die MySQL-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/Lists

sudo 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. Root

chmod 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] Verzeichnis

Character_Set_SERVER = UTF8 6. Befehle hinzufügen

/ETC/ETC/ init .d/mysql

mysqldump -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 Bibliothekstabelle

Datenwiederherstellung:

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 starten

Autorisierter Benutzer:

Autorisierte Liste auf Bibliothek gewähren. an „tiger“@„%“ identifiziert durch „123“ mit Berechtigungsliste

Python3-Modulinstallation:

Modulname: pymysql

Online: sudo pip3 install pymysql

Offline: 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

    Datenbankbibliotheksnamen-Zeichensatz erstellen utf8; Bibliothekszeichensatz anzeigen
  • Datenbank auswählen(); Aktuelle Bibliothek anzeigen
  • 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

  • Tabellennamen aktualisieren, Feld 1 = Wert 1, Feldname 2 = Wert 2 ,... wo Bedingung Tabellendatensatz ändern (wo muss hinzugefügt werden)
  • Tabelle ändern Tabellenname Originalnamen ändern Neuer Name Datentyp;                                      .Abfrage MySQL Variable
  • Select Feldname aus Tabellenname Liste; Tabellenname;                    id int, Primärschlüssel (Feldname) );                                                                                auf
  • (id int Primary Key, )auto_increment=10000; Tabellenname ändern id int auto_inkrementieren
  • Tabelle ändern Tabellennamen id int ; Primärschlüssel löschen.
  • Index aus Tabellenname anzeigen (Abfrageergebnisse)
  • QNON_UNIQUE: 0: Der einzige Index von Unique (Abfrageergebnis)
  • Ändern Sie den Namen des Außenschlüssels des Fremdschlüssels. Löschen Sie den Namen der Tabelle. Zeigen Sie den Namen des Außenschlüssels an Fremdschlüssel erstellen:
  • create…t1();

  • create table t2(
  • Foreign Key (Referenzfeldname)

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 Link

Tabelle, 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 bcf94e85e4054e929b7d12b0c8feb656 ~/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)
# ((&#39;7c4a8d09ca3762af61e59520943dc26494f8941b&#39;,),)

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen