[PYTHON] Super einfacher ODER Mapper-Datensatz für faule Leute

Einführung

Benutzt ihr ORM? Das ORM in Python ist wie folgt.

ORM muss ein Modell definieren, wenn es versucht, es zu verwenden. Es ist ziemlich schwierig, ein Skript für die Datenbank eines vorhandenen Projekts zu schreiben und es schnell zu verwenden.

Daher möchte ich ein OR-Mapper-Dataset einführen, das schnell verwendet werden kann, ohne eine problematische Modelldefinition zu schreiben.

pudo/dataset

Es ist keine Modelldefinition erforderlich, daher auch Projekte mit Hibernate ORM in Java und Doctrine in PHP Die Bereitstellung ist einfach.

SQLAlchemy wird im Datensatz verwendet.

SELECT

import dataset

db = dataset.connect('mysql://[email protected]/information_schema')

table = db['COLLATIONS']
results = table.find(CHARACTER_SET_NAME='utf8', order_by='-ID', _limit=3)
for r in results:
    print(r)
    # OrderedDict([('COLLATION_NAME', 'utf8_general_mysql500_ci'), ('CHARACTER_SET_NAME', 'utf8'), ('ID', 223L), ('IS_DEFAULT', ''), ('IS_COMPILED', 'Yes'), ('SORTLEN', 1L)])
    # OrderedDict([('COLLATION_NAME', 'utf8_vietnamese_ci'), ('CHARACTER_SET_NAME', 'utf8'), ('ID', 215L), ('IS_DEFAULT', ''), ('IS_COMPILED', 'Yes'), ('SORTLEN', 8L)])
    # OrderedDict([('COLLATION_NAME', 'utf8_unicode_520_ci'), ('CHARACTER_SET_NAME', 'utf8'), ('ID', 214L), ('IS_DEFAULT', ''), ('IS_COMPILED', 'Yes'), ('SORTLEN', 8L)])

SQL Im obigen Beispiel wird die folgende SQL ausgeführt


SELECT `COLLATIONS`.`COLLATION_NAME`, `COLLATIONS`.`CHARACTER_SET_NAME`, `COLLATIONS`.`ID`, `COLLATIONS`.`IS_DEFAULT`, `COLLATIONS`.`IS_COMPILED`, `COLLATIONS`.`SORTLEN` 
FROM `COLLATIONS` 
WHERE `COLLATIONS`.`CHARACTER_SET_NAME` = 'utf8' ORDER BY `COLLATIONS`.`ID` DESC 
 LIMIT 0, 3

Grenzen

Es wird nur die WHERE-Klausel in der gleichen Bedingung unterstützt. Wenn Sie also SQL-Funktionen wie die LIKE-Bedingung und count verwenden, SQL Alchemy-Notation. Verwenden Sie db.query () in HTML # Auswahl).

INSERT

Erstellen Sie zunächst eine leere Datenbank.

$ mysqladmin create sandbox

Übergeben Sie die einzufügenden Daten im Wörterbuchformat.

import dataset

db = dataset.connect('mysql://[email protected]/sandbox')

table = db['Alchemist']

table.insert(dict(name='Alphonse Elric'))
table.insert_many([dict(name='Edward Elric', titled='Fullmetal'), dict(name='Roy Mustang', titled='Flame')])

Dadurch werden 3 Datensätze erstellt.

SQL

Werfen wir einen Blick auf das ausgegebene SQL.

SHOW FULL TABLES FROM `sandbox`
rollback
--Überprüfen Sie, ob eine Tabelle vorhanden ist
DESCRIBE `Alchemist`
rollback
rollback
--Tabelle erstellen
CREATE TABLE `Alchemist` (
        id INTEGER NOT NULL AUTO_INCREMENT, 
        PRIMARY KEY (id)
)
commit
rollback
--Spalte hinzufügen
ALTER TABLE `Alchemist` ADD COLUMN name TEXT
commit
rollback
SHOW FULL TABLES FROM `sandbox`
--Überprüfen Sie die Tabelle
SHOW CREATE TABLE `Alchemist`
rollback
-- table.insert(dict(name='Alphonse Elric'))
INSERT INTO `Alchemist` (name) VALUES ('Alphonse Elric')
commit
rollback
--Spalte hinzufügen
ALTER TABLE `Alchemist` ADD COLUMN titled TEXT
commit
rollback
SHOW FULL TABLES FROM `sandbox`
SHOW CREATE TABLE `Alchemist`
rollback
-- table.insert_many([dict(name='Edward Elric', titled='Fullmetal'), dict(name='Roy Mustang', titled='Flame')])
INSERT INTO `Alchemist` (name, titled) VALUES 
('Edward Elric', 'Fullmetal'),
('Roy Mustang', 'Flame')
commit

Es verhält sich so, als gäbe es keine Tabelle oder Spalte zum Einfügen. Wie einfach ~~ beängstigend ~~! Um ehrlich zu sein, kann ich es nicht für die Verwendung in einer Produktionsumgebung empfehlen.

Andere

Das Charakterlogo auf der offiziellen Website ist süß. dataset: databases for lazy people — dataset 0.6.0 documentation

Sie können auch SQL-Ergebnisse im JSON-Format schreiben. DB-Daten im JSON-Format exportieren - Qiita

Recommended Posts

Super einfacher ODER Mapper-Datensatz für faule Leute
Python für Super-Anfänger Super-Anfänger Python # Einfach loszuwerden
Einfaches Verständnis von Python für & Arrays (für Super-Anfänger)
Lassen Sie die SQL vom Dataset ausführen (Python OR Mapper)