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