您是否曾經考慮過或需要將數據從源代碼對像傳遞到目錄或數據庫中? 擁有一個能夠自動執行而不是手動操作的工具是非常實用的,對嗎? 但是為了做到這一點,這些值應該採用正確的格式。 好吧,如果您需要這樣做, 您必須知道ORM(對象關係映射).
使用ORM,您的對象的數據將被傳遞為正確的格式,從而能夠通過映射它們將所有這些信息保存在數據庫中。 這將創建一個虛擬數據庫,在其中您在代碼中創建的應用程序中找到值,從而 鏈接到該數據庫 給他們持久性並以這種簡單的方式註冊他們。 這使記錄的信息具有持久性,以便以後可以存儲,分析,記錄或使用它。
通過 例子想像一下,您有一個Python程序負責從記錄溫度和濕度的DHT11傳感器讀取值。 但是您不想從環境中記錄這些值。 您可以通過一種簡單的方法來創建源代碼,以編程所需的內容並讀取傳感器獲取的值並將其顯示在屏幕上。 但是,如果您想存儲這些值以分析何時出現這些值的峰值或對於任何其他實用程序該怎麼辦?
在這種情況下,您應該能夠將這些數據同時保存在數據庫中,這就是ORM有用的地方。 除了您的DIY項目 您可以存儲所需的內容並對待其價值 手動或通過其他軟件,這要歸功於您已將它們捕獲到數據庫中...
什麼是ORM?
El 對象關係映射或ORM 作為其英文縮寫,它是一種編程技術,可用於轉換面向對象編程語言或程序以及關係數據庫(SQL類型)中使用的數據作為持久性引擎。 這將使程序的值創建一個虛擬的面向對象的數據庫來保存您所需的數據。
如果您曾經對連接到數據庫的應用程序進行過編程,那麼您將認識到轉換信息以使其適應數據庫非常困難,反之亦然。 即 映射是一件乏味的事情 除了使ORM獨立於您要使用的數據庫之外,您還可以使用ORM進行自動化,甚至可以毫無問題地更改數據庫引擎。
Un 實際例子是F1汽車,它具有一系列傳感器,可測量壓力,溫度,消耗量,RPM,速度,加速度,檔位變化,轉向運動,機油等值。 借助遙測技術,工程師可以在計算機上實時查看所有這些值。 但是當會議結束時,工程師需要研究和分析該數據,以了解如何改善設置,改進汽車或造成故障的原因。 為此,需要將它們導出到數據庫。
ORM的優缺點
正如我已經評論過的那樣, ORM允許您抽象 從數據庫中並大大簡化了必要的源代碼。 映射將是自動的,這意味著在編程時可以省去很多麻煩。 除了易於使用和提高速度外,它還提供了數據訪問層抵禦攻擊的安全性。
但並非所有都是好事 ORM也有缺點。 在重負載的環境中,這可能會降低性能,因為您要向系統添加額外的一層。 它還需要學習ORM,以便您可以使用它,這可能需要一些時間才能正確理解和利用。
編程語言的ORM
根據您使用的編程語言 您可以使用ORM。 您不能僅使用任何ORM,而必須使用正確的ORM。 例如:
- Java的:Hibernate,MyBatis,iBatis,Ebean等
- 。NET:實體框架,nHibernate,MyBatis.Net等。
- PHP:教義,推進,岩石,Torpor等
- 蟒蛇: Peewee,SQLAlchemy,PonyORM,Elixir等
Python和ORM的示例
Peewee是用於Python的簡單且簡短的ORM。 您可以從中獲取更多信息 官方網站。 另外,您應該知道Peewee支持不同的DBMS,即幾種數據庫管理系統,例如SQLite,MySQL和Postgresql。 您只需要更改bbdd的初始聲明即可。
例如,在 您的快速指南或快速入門 在網站上,您可以看到Peewee的簡單代碼示例,如下所示:
from peewee import * db = SqliteDatabase('people.db') class Person(Model): name = CharField() birthday = DateField() class Meta: database = db # This model uses the "people.db" database.
萬一您覺得這沒什麼,您可以隨意支配 pwiz工具,該程序可從數據庫中獲取Peewee模型。 例如:
<br data-mce-bogus="1"> python -m pwiz -e postgresql basedatos > modelo.py<br data-mce-bogus="1">