<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 練習 45:創建 ORM > 原文:[Exercise 45: Creating an ORM](https://learncodethehardway.org/more-python-book/ex45.html) > 譯者:[飛龍](https://github.com/wizardforcel) > 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) > 自豪地采用[谷歌翻譯](https://translate.google.cn/) 這本書的 SQL 部分的最后一個練習是一個很大的跳躍。你使用一個數據庫知道了 SQL 語言的基礎知識。你也應該精通 Python 的 OOP。現在是時候組合這兩個,并創建一個對象關系管理器(ORM)。ORM 的工作是,使用簡單的 Python 類,并將它們轉換為數據庫表中存儲的行。如果你曾經使用過 Django,那么你已經使用他們的 ORM 來存儲數據。在本練習中,你將嘗試逆向分析如何實現它。 ## 挑戰練習 在現實世界中,如果一個為我工作的程序員打算創建自己的 ORM,我會說:“沒門,使用現有的。”工作環境不同于教育環境,因為有人付錢讓你完成一些事情。使用你的工作時間,來創造一個不能使你的雇主受益的事情,這是不正當的。但是,你自己的個人時間全部是你的,作為初學者,你應該嘗試重新創建盡可能多的經典軟件。 創建一個 ORM 將會讓你了解許多問題,關于面向對象概念和 SQL 之間的不一致。有許多 SQL 可以建模的東西,而類經常卡在這里。還有一個問題,SQL 中的一切都是表。嘗試創建自己的 ORM 將會讓你深入了解 SQL 和 OOP,我建議花費大量的時間,盡你所能制作一個最好的 ORM。 你在 ORM 中應實現的一些主要功能有: + 從外部傳遞字符串到 ORM 應該是安全的。如果你使用 F 字符串來制作你的 SQL,那么你就錯了。原因是,如果你執行`f"SELECT * FROM {table_name}`,那么有人可以從外部將`table_name`設置為 SQL,例如`person; DROP TABLE person`。你的數據庫很可能以這種方式運行,銷毀所有內容或更糟。有些數據庫甚至允許你在 SQL 中運行系統命令,這被稱為“SQL 注入”,你不應該在 ORM 中引入它。 + 所有的 CRUD 操作,但在 Python 中實現。我建議你跳過`CREATE TABLE`部分,直到你讓其他的一切正常工作。簡單的`INSERT`,`SELECT`,`UPDATE`和`DELETE`是易于制作的,但是從類定義創建數據庫綱要涉及到一些主流的 Python 黑魔法,使其真正有效。使用手工制作的`.sql`文件創建你的數據庫,然后一旦讓其他東西正常工作,你可以嘗試綱要系統來替換`.sql`文件。 + 將 Python 類型匹配到 SQL 類型以及新類型,來處理 SQL 類型。你可能會發現,你必須做一些雜技,將 Python 數據類型放到 SQL 表中。也許這太痛苦了,所以你最終會自己制作數據類型。這就是 Django 做的事情。 + 事務是一個高級話題,但如果你可以實現它就試一試。 我也會說,在這個練習中,你可以從任意數量的項目借鑒功能。在設計時,請隨意查看 Django 的 ORM。最后,我強烈建議你首先僅僅實現一個 ORM,它可以處理你在本書的這個部分創建的小型數據庫。一旦你得到一個可以處理這個數據庫的東西,就可以將其推廣到任何數據庫。 ## 深入學習 本書開頭提到了,Joe Celko 的[《"Smarties" SQL》](http://amzn.to/1QKi5iG)將會讓你了解,你需要了解的 SQL 的每一件事情。Joe 的書很好,會讓你遠遠超出這個小型速成課。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看