Inhaltsverzeichnis
Hintergrund
Für mich persönlich wird sich mein Projekt bei der Einführung des ORM-Frameworks auf das MVC-Muster für das folgende Design beziehen. Unter diesen speichert model einige Datenbankmodelle, d. h. Python-Klassen, die den einzelnen Modellen zugeordnet sind, d. Führt Datenbankoperationen aus, muss nur die Ebene model_op aufgerufen werden, und Sie müssen sich nicht um die Modellebene kümmern, um eine Entkopplung zu erreichen.
Im ORM-Framework wird das Ergebnis abgebildet ist die Python-Klasse unten
Zweitens muss jede Python-Klasse das Attribut __tablename__ enthalten, sonst kann die entsprechende Tabelle nicht gefunden werden.
Heim Backend-Entwicklung Python-Tutorial Ein magisches Tool für Neulinge, um Python zu lernen und in fünf Minuten mit SQL zu spielen!

Ein magisches Tool für Neulinge, um Python zu lernen und in fünf Minuten mit SQL zu spielen!

Apr 12, 2023 pm 05:28 PM
python sql

Ein magisches Tool für Neulinge, um Python zu lernen und in fünf Minuten mit SQL zu spielen!

Hintergrund

Tatsächlich habe ich am Anfang PyMySQL verwendet, aber ich fand, dass die Wartung mühsamer war und das Risiko von Code bestand Injektion, also habe ich einfach direkt das ORM-Framework verwendet.

ORM ist Object Relational Mapper, der einfach als Zuordnung zwischen Datenbanktabellen und Python-Klassen verstanden werden kann, indem Sie die Datenbank indirekt bedienen.

Die bekannteren Python-ORM-Frameworks sind SQLAlchemy und Peewee. Ich werde hier keinen Vergleich anstellen, sondern nur einige meiner persönlichen Verwendungen von SQLAlchemy erläutern. Ich hoffe, dass es allen meinen Freunden hilfreich sein kann. #🎜🎜 ##### 🎜🎜#SQLALCHEMY-Version: 1.3.15

🎜🎜#PyMySQL-Version: 0.9.3#🎜🎜 ## 🎜🎜#MySQL-Version: 5.7#🎜🎜 ## 🎜 🎜#
    Initialisierungsarbeit
  • Im Allgemeinen fallen bei der Verwendung eines ORM-Frameworks einige Initialisierungsarbeiten an, z. B. Datenbankverbindungen, Definition grundlegender Zuordnungen usw.
  • Am Beispiel von MySQL müssen Sie nur die DSN-Zeichenfolge übergeben, um eine Datenbankverbindung herzustellen. Echo gibt an, ob die entsprechende SQL-Anweisung ausgegeben werden soll, was beim Debuggen hilfreich ist.
  • from sqlalchemy import create_engine
    engine = create_engine('mysql+pymysql://$user:$password@$host:$port/$db?charset=utf8mb4', echo=True)
    Nach dem Login kopieren
  • persönliches Design

Für mich persönlich wird sich mein Projekt bei der Einführung des ORM-Frameworks auf das MVC-Muster für das folgende Design beziehen. Unter diesen speichert model einige Datenbankmodelle, d. h. Python-Klassen, die den einzelnen Modellen zugeordnet sind, d. Führt Datenbankoperationen aus, muss nur die Ebene model_op aufgerufen werden, und Sie müssen sich nicht um die Modellebene kümmern, um eine Entkopplung zu erreichen.

├── main.py
├── model
│ ├── __init__.py
│ ├── base_model.py
│ ├── ddl.sql
│ └── py_orm_model.py
└── model_op
 ├── __init__.py
 └── py_orm_model_op.py
Nach dem Login kopieren

Mapping-Anweisung (Modelleinführung)

Zum Beispiel, wenn wir eine solche Testtabelle haben

create table py_orm (
 `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '唯一id',
 `name` varchar(255) NOT NULL DEFAULT '' COMMENT '名称',
 `attr` JSON NOT NULL COMMENT '属性',
 `ct` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `ut` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON update CURRENT_TIMESTAMP COMMENT '更新时间',
 PRIMARY KEY(`id`)
)ENGINE=InnoDB COMMENT '测试表';
Nach dem Login kopieren

Im ORM-Framework wird das Ergebnis abgebildet ist die Python-Klasse unten

# py_orm_model.py
from .base_model import Base
from sqlalchemy import Column, Integer, String, TIMESTAMP, text, JSON
class PyOrmModel(Base):
 __tablename__ = 'py_orm'
 id = Column(Integer, autoincrement=True, primary_key=True, comment='唯一id')
 name = Column(String(255), nullable=False, default='', comment='名称')
 attr = Column(JSON, nullable=False, comment='属性')
 ct = Column(TIMESTAMP, nullable=False, server_default=text('CURRENT_TIMESTAMP'), comment='创建时间')
 ut = Column(TIMESTAMP, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), comment='更新时间')
Nach dem Login kopieren

Zunächst können wir sehen, dass PyOrmModel die Basisklasse erbt, eine von sqlalchemy bereitgestellte Basisklasse, die einige Überprüfungen der von uns deklarierten Python-Klassen durchführt es in base_model.

# base_model.py
# 一般base_model做的都是一些初始化的工作
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:33306/orm_test?charset=utf8mb4", echo=False)
Nach dem Login kopieren

Zweitens muss jede Python-Klasse das Attribut __tablename__ enthalten, sonst kann die entsprechende Tabelle nicht gefunden werden.

Drittens gibt es zwei Möglichkeiten, eine Datentabelle zu erstellen. Die erste besteht natürlich darin, sie manuell in MySQL zu erstellen. Solange es kein Problem mit Ihrer Python-Klassendefinition gibt, kann sie normal funktionieren. Die zweite wird über das Orm-Framework erstellt, wie zum Beispiel das Folgende:

# main.py
# 注意这里的导入路径,Base创建表时会寻找继承它的子类,如果路径不对,则无法创建成功
from sqlachlemy_lab import Base, engine
if __name__ == '__main__':
 Base.metadata.create_all(engine)
Nach dem Login kopieren

Erstellungseffekt:

...
2020-04-04 10:12:53,974 INFO sqlalchemy.engine.base.Engine
CREATE TABLE py_orm (
id INTEGER NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL DEFAULT '' COMMENT '名称',
attr JSON NOT NULL COMMENT '属性',
ct TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
ut TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 PRIMARY KEY (id)
)
Nach dem Login kopieren

Viertens über Feldattribute

#🎜 🎜#1.primary_key Es ist einfacher zu verstehen als Autoincrement, der Primärschlüssel und das inkrementelle Attribut von MySQL.

2. Wenn es sich um einen int-Typ handelt, müssen Sie die Länge nicht angeben. Wenn es sich jedoch um einen varchar-Typ handelt, müssen Sie sie angeben.

3.nullable entspricht NULL und NOT NULL in MySQL

4. Über default und server_default: default stellt den Standardwert auf ORM-Framework-Ebene dar, d. h. eingefügtes If Dem Feld wird kein Wert zugewiesen, der von uns definierte Standardwert wird verwendet; server_default stellt den Standardwert auf Datenbankebene dar, der das Standardschlüsselwort in der DDL-Anweisung ist.

  • Sitzungseinführung
  • In der SQLAlchemy-Dokumentation wird erwähnt, dass das Hinzufügen, Löschen und Ändern der Datenbank über die Sitzung durchgeführt wird.
  • >>> from sqlalchemy.orm import sessionmaker
    >>> Session = sessionmaker(bind=engine)
    >>> session = Session()
    >>> orm = PyOrmModel(id=1, name='test', attr={})
    >>> session.add(orm)
    >>> session.commit()
    >>> session.close()
    Nach dem Login kopieren
  • Wie oben können wir sehen, dass wir für jeden Vorgang die Sitzung erfassen, übermitteln und freigeben müssen. Dies ist zu redundant und mühsam, daher führen wir normalerweise eine Kapselung durch.
  • 1. Verwenden Sie den Kontextmanager, um das abnormale Rollback und Schließen der Sitzung zu verwalten. Dieser Teil stimmt fast mit dem Artikel überein, auf den verwiesen wird.
  • # base_model.py
    from contextlib import contextmanager
    from sqlalchemy.orm import sessionmaker, scoped_session
    def _get_session():
     """获取session"""
     return scoped_session(sessionmaker(bind=engine, expire_on_commit=False))()
    # 在这里对session进行统一管理,包括获取,提交,回滚和关闭
    @contextmanager
    def db_session(commit=True):
     session = _get_session()
     try:
     yield session
     if commit:
     session.commit()
     except Exception as e:
     session.rollback()
     raise e
     finally:
     if session:
     session.close()
    Nach dem Login kopieren
2. Fügen Sie in PyOrmModel zwei Methoden für die Konvertierung zwischen Modell und Diktat hinzu.

class PyOrmModel(Base):
 ...
 @staticmethod
 def fields():
 return ['id', 'name', 'attr']
 @staticmethod
 def to_json(model):
 fields = PyOrmModel.fields()
 json_data = {}
 for field in fields:
 json_data[field] = model.__getattribute__(field)
 return json_data
 @staticmethod
 def from_json(data: dict):
 fields = PyOrmModel.fields()
 model = PyOrmModel()
 for field in fields:
 if field in data:
 model.__setattr__(field, data[field])
 return model
Nach dem Login kopieren

3. Ich habe die Sitzung direkt aufgerufen , sodass der Aufrufer nicht auf die Modellschicht achten muss und die Kopplung reduziert wird.

# py_orm_model_op.py
from sqlachlemy_lab.model import db_session
from sqlachlemy_lab.model import PyOrmModel
class PyOrmModelOp:
 def __init__(self):
 pass
 @staticmethod
 def save_data(data: dict):
 with db_session() as session:
 model = PyOrmModel.from_json(data)
 session.add(model)
 # 查询操作,不需要commit
 @staticmethod
 def query_data(pid: int):
 data_list = []
 with db_session(commit=False) as session:
 data = session.query(PyOrmModel).filter(PyOrmModel.id == pid)
 for d in data:
 data_list.append(PyOrmModel.to_json(d))
 return data_list
Nach dem Login kopieren

4. Anrufer

# main.py
from sqlachlemy_lab.model_op import PyOrmModelOp
if __name__ == '__main__':
 PyOrmModelOp.save_data({'id': 1, 'name': 'test', 'attr': {}})
Nach dem Login kopieren
Den vollständigen Code finden Sie unter:

​https://github.com /yangancode /python_lab/tree/master/sqlachlemy_lab​

Das obige ist der detaillierte Inhalt vonEin magisches Tool für Neulinge, um Python zu lernen und in fünf Minuten mit SQL zu spielen!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie MySQL nach der Installation So verwenden Sie MySQL nach der Installation Apr 08, 2025 am 11:48 AM

Der Artikel führt den Betrieb der MySQL -Datenbank vor. Zunächst müssen Sie einen MySQL -Client wie MySQLworkBench oder Befehlszeilen -Client installieren. 1. Verwenden Sie den Befehl mySQL-uroot-P, um eine Verbindung zum Server herzustellen und sich mit dem Stammkonto-Passwort anzumelden. 2. Verwenden Sie die Erstellung von Createdatabase, um eine Datenbank zu erstellen, und verwenden Sie eine Datenbank aus. 3.. Verwenden Sie CreateTable, um eine Tabelle zu erstellen, Felder und Datentypen zu definieren. 4. Verwenden Sie InsertInto, um Daten einzulegen, Daten abzufragen, Daten nach Aktualisierung zu aktualisieren und Daten nach Löschen zu löschen. Nur indem Sie diese Schritte beherrschen, lernen, mit gemeinsamen Problemen umzugehen und die Datenbankleistung zu optimieren, können Sie MySQL effizient verwenden.

Muss MySQL bezahlen? Muss MySQL bezahlen? Apr 08, 2025 pm 05:36 PM

MySQL hat eine kostenlose Community -Version und eine kostenpflichtige Enterprise -Version. Die Community -Version kann kostenlos verwendet und geändert werden, die Unterstützung ist jedoch begrenzt und für Anwendungen mit geringen Stabilitätsanforderungen und starken technischen Funktionen geeignet. Die Enterprise Edition bietet umfassende kommerzielle Unterstützung für Anwendungen, die eine stabile, zuverlässige Hochleistungsdatenbank erfordern und bereit sind, Unterstützung zu bezahlen. Zu den Faktoren, die bei der Auswahl einer Version berücksichtigt werden, gehören Kritikalität, Budgetierung und technische Fähigkeiten von Anwendungen. Es gibt keine perfekte Option, nur die am besten geeignete Option, und Sie müssen die spezifische Situation sorgfältig auswählen.

So optimieren Sie die Datenbankleistung nach der MySQL -Installation So optimieren Sie die Datenbankleistung nach der MySQL -Installation Apr 08, 2025 am 11:36 AM

Die MySQL -Leistungsoptimierung muss von drei Aspekten beginnen: Installationskonfiguration, Indexierung und Abfrageoptimierung, Überwachung und Abstimmung. 1. Nach der Installation müssen Sie die my.cnf -Datei entsprechend der Serverkonfiguration anpassen, z. 2. Erstellen Sie einen geeigneten Index, um übermäßige Indizes zu vermeiden und Abfrageanweisungen zu optimieren, z. B. den Befehl Erklärung zur Analyse des Ausführungsplans; 3. Verwenden Sie das eigene Überwachungstool von MySQL (ShowProcessList, Showstatus), um die Datenbankgesundheit zu überwachen und die Datenbank regelmäßig zu sichern und zu organisieren. Nur durch kontinuierliche Optimierung dieser Schritte kann die Leistung der MySQL -Datenbank verbessert werden.

Wie optimieren Sie die MySQL-Leistung für Hochlastanwendungen? Wie optimieren Sie die MySQL-Leistung für Hochlastanwendungen? Apr 08, 2025 pm 06:03 PM

Die MySQL-Datenbankleistung Optimierungshandbuch In ressourcenintensiven Anwendungen spielt die MySQL-Datenbank eine entscheidende Rolle und ist für die Verwaltung massiver Transaktionen verantwortlich. Mit der Erweiterung der Anwendung werden jedoch die Datenbankleistung Engpässe häufig zu einer Einschränkung. In diesem Artikel werden eine Reihe effektiver Strategien zur Leistungsoptimierung von MySQL -Leistung untersucht, um sicherzustellen, dass Ihre Anwendung unter hohen Lasten effizient und reaktionsschnell bleibt. Wir werden tatsächliche Fälle kombinieren, um eingehende Schlüsseltechnologien wie Indexierung, Abfrageoptimierung, Datenbankdesign und Caching zu erklären. 1. Das Design der Datenbankarchitektur und die optimierte Datenbankarchitektur sind der Eckpfeiler der MySQL -Leistungsoptimierung. Hier sind einige Kernprinzipien: Die Auswahl des richtigen Datentyps und die Auswahl des kleinsten Datentyps, der den Anforderungen entspricht, kann nicht nur Speicherplatz speichern, sondern auch die Datenverarbeitungsgeschwindigkeit verbessern.

PHPMYADMIN SQL Mastery: Fortgeschrittene Abfragen- und Datenmanipulationstechniken PHPMYADMIN SQL Mastery: Fortgeschrittene Abfragen- und Datenmanipulationstechniken Apr 07, 2025 am 12:15 AM

PHPMYADMIN kann erweiterte Abfragen und Datenvorgänge über die folgenden Methoden ausführen: 1. Verwenden Sie Join -Operationen, um mehrere Tabellendaten zu kombinieren, z. B. die Kombination von Kunden- und Bestellabellen. 2. Verwenden Sie Unterabfragen, um Abfragen zu nisten, um Daten bestimmter Bedingungen zu filtern. 3.. Verwenden Sie Fensterfunktionen, um Datenanalysen auszuführen, z. B. die Rangliste von Kundenaufträgen. 4. Verwenden Sie den Befehl erklären, um die Abfrageleistung zu optimieren, häufig auftretende Fehler zu vermeiden und die Effizienz zu verbessern.

Lösungen für den Dienst, der nach der MySQL -Installation nicht gestartet werden kann Lösungen für den Dienst, der nach der MySQL -Installation nicht gestartet werden kann Apr 08, 2025 am 11:18 AM

MySQL hat sich geweigert, anzufangen? Nicht in Panik, lass es uns ausprobieren! Viele Freunde stellten fest, dass der Service nach der Installation von MySQL nicht begonnen werden konnte, und sie waren so ängstlich! Mach dir keine Sorgen, dieser Artikel wird dich dazu bringen, ruhig damit umzugehen und den Mastermind dahinter herauszufinden! Nachdem Sie es gelesen haben, können Sie dieses Problem nicht nur lösen, sondern auch Ihr Verständnis von MySQL -Diensten und Ihren Ideen zur Fehlerbehebungsproblemen verbessern und zu einem leistungsstärkeren Datenbankadministrator werden! Der MySQL -Dienst startete nicht und es gibt viele Gründe, von einfachen Konfigurationsfehlern bis hin zu komplexen Systemproblemen. Beginnen wir mit den häufigsten Aspekten. Grundkenntnisse: Eine kurze Beschreibung des Service -Startup -Prozesses MySQL Service Startup. Einfach ausgedrückt, lädt das Betriebssystem MySQL-bezogene Dateien und startet dann den MySQL-Daemon. Dies beinhaltet die Konfiguration

MySQL -Installationsfehlerlösung MySQL -Installationsfehlerlösung Apr 08, 2025 am 10:48 AM

Häufige Gründe und Lösungen für MySQL -Installationsfehler: 1. Falsch Benutzername oder Passwort, oder der MySQL -Dienst wird nicht gestartet. Sie müssen den Benutzernamen und das Passwort überprüfen und den Dienst starten. 2. Portkonflikte müssen Sie den MySQL -Höranschluss ändern oder das Programm schließen, das Port 3306 besetzt. 3. Die Abhängigkeitsbibliothek fehlt, Sie müssen den Systempaket -Manager verwenden, um die erforderliche Abhängigkeitsbibliothek zu installieren. V. 5. Falsche Konfigurationsdatei müssen die Konfigurationsdatei von My.cnf überprüfen, um sicherzustellen, dass die Konfiguration korrekt ist. Nur wenn MySQL stetig und sorgfältig überprüft wird, können MySQL reibungslos installiert werden.

Die MySQL -Download -Datei ist beschädigt und kann nicht installiert werden. Reparaturlösung Die MySQL -Download -Datei ist beschädigt und kann nicht installiert werden. Reparaturlösung Apr 08, 2025 am 11:21 AM

Die MySQL -Download -Datei ist beschädigt. Was soll ich tun? Wenn Sie MySQL herunterladen, können Sie die Korruption der Datei begegnen. Es ist heutzutage wirklich nicht einfach! In diesem Artikel wird darüber gesprochen, wie dieses Problem gelöst werden kann, damit jeder Umwege vermeiden kann. Nach dem Lesen können Sie nicht nur das beschädigte MySQL -Installationspaket reparieren, sondern auch ein tieferes Verständnis des Download- und Installationsprozesses haben, um zu vermeiden, dass Sie in Zukunft stecken bleiben. Lassen Sie uns zunächst darüber sprechen, warum das Herunterladen von Dateien beschädigt wird. Dafür gibt es viele Gründe. Netzwerkprobleme sind der Schuldige. Unterbrechung des Download -Prozesses und der Instabilität im Netzwerk kann zu einer Korruption von Dateien führen. Es gibt auch das Problem mit der Download -Quelle selbst. Die Serverdatei selbst ist gebrochen und natürlich auch unterbrochen, wenn Sie sie herunterladen. Darüber hinaus kann das übermäßige "leidenschaftliche" Scannen einer Antiviren -Software auch zu einer Beschädigung von Dateien führen. Diagnoseproblem: Stellen Sie fest, ob die Datei wirklich beschädigt ist

See all articles