『壹』 有誰能通俗點的給我講解下ORM是什麼嗎網上查的一大把專業理論名詞。看了一頭霧水。有誰能通俗點將嗎
我用c#的說法給你解釋一下:
在ORM出現之前,.NET語言對資料庫操作都是使用ADO.NET
就是手動打開關閉sqlConnection ,然後手動拼接SQL語句,如:
select*fromstudent;
直接使用SQL語句雖然能帶來極大的性能體驗,但是也會有很多問題:
SQL語句的錯誤不好檢查(因為SQL語句全是字元串,無法做語法檢查)
接收到的數據全是弱類型,如果你想要使用基本都要做類型轉換
ORM就是用本地的model代替資料庫裡面的各種表,你直接通過操作dbContext就可以獲得資料庫中的數據,然後它還使用一些技術把ADO.NET中一些麻煩的事給解決了
在EF中使用LINQ來編寫資料庫操作語法,ORM會自己將LINQ語句翻譯為對應的SQL語句,然後將返回的數據自動做類型轉換生成對應的model,就像這樣:
varstudentList=dbContext.Student.ToList();
使用ORM後既有語法檢查,又省略了很多以前繁瑣的操作,可以讓開發人員將更多的注意力集中到業務的處理上,提高他們的效率
同時一些好的ORM還會有緩存處理、合並執行SQL等其它功能;它絕對是現代中小型系統的開發必備
『貳』 不用orm,直接用sql,好嗎
沒啥不好的,orm的底層也都是sql,orm的目的是將數據對象化,利用面向對象的特點完成數據操作
『叄』 ORM是否必要
ORM可以防止注入作為附加功能,SQL也可以帶來反注入機制。ORM的主要作用是將資料庫域的對象映射到面向對象的域中,因為開發人員更熟悉它們。
開發人員在開發時更傾向於用對象的方式思考
通過ORM,抽象被構造並輸入到應用程序代碼中,這樣就可以在代碼中直接實現許多必要的約束,這有助於正確性。『肆』 在python上怎麼使用sql
第一種辦法:
#導入SQLite驅動:
>>>importsqlite3
#連接到SQLite資料庫
#資料庫文件是test.db
#如果文件不存在,會自動在當前目錄創建:
>>>conn=sqlite3.connect('test.db')
#創建一個Cursor:
>>>cursor=conn.cursor()
#執行一條SQL語句,創建user表:
>>>cursor.execute('createtableuser(idvarchar(20)primarykey,namevarchar(20))')
<sqlite3.Cursorobjectat0x10f8aa260>
#繼續執行一條SQL語句,插入一條記錄:
>>>cursor.execute('insertintouser(id,name)values('1','Michael')')
<sqlite3.Cursorobjectat0x10f8aa260>
#通過rowcount獲得插入的行數:
>>>cursor.rowcount
1
#關閉Cursor:
>>>cursor.close()
#提交事務:
>>>conn.commit()
#關閉Connection:
>>>conn.close()
第二種辦法:
使用 SQLalchemy 等ORM 的庫。