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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 問題 你想在關系型數據庫中查詢、增加或刪除記錄。 ## 解決方案 Python中表示多行數據的標準方式是一個由元組構成的序列。例如: stocks = [ ('GOOG', 100, 490.1), ('AAPL', 50, 545.75), ('FB', 150, 7.45), ('HPQ', 75, 33.2), ] 依據PEP249,通過這種形式提供數據,可以很容易的使用Python標準數據庫API和關系型數據庫進行交互。所有數據庫上的操作都通過SQL查詢語句來完成。每一行輸入輸出數據用一個元組來表示。 為了演示說明,你可以使用Python標準庫中的 `sqlite3` 模塊。如果你使用的是一個不同的數據庫(比如MySql、Postgresql或者ODBC),還得安裝相應的第三方模塊來提供支持。不過相應的編程接口幾乎都是一樣的,除了一點點細微差別外。 第一步是連接到數據庫。通常你要執行 `connect()` 函數,給它提供一些數據庫名、主機、用戶名、密碼和其他必要的一些參數。例如: >>> import sqlite3 >>> db = sqlite3.connect('database.db') >>> 為了處理數據,下一步你需要創建一個游標。一旦你有了游標,那么你就可以執行SQL查詢語句了。比如: >>> c = db.cursor() >>> c.execute('create table portfolio (symbol text, shares integer, price real)') <sqlite3.Cursor object at 0x10067a730> >>> db.commit() >>> 為了向數據庫表中插入多條記錄,使用類似下面這樣的語句: >>> c.executemany('insert into portfolio values (?,?,?)', stocks) <sqlite3.Cursor object at 0x10067a730> >>> db.commit() >>> 為了執行某個查詢,使用像下面這樣的語句: >>> for row in db.execute('select * from portfolio'): ... print(row) ... ('GOOG', 100, 490.1) ('AAPL', 50, 545.75) ('FB', 150, 7.45) ('HPQ', 75, 33.2) >>> 如果你想接受用戶輸入作為參數來執行查詢操作,必須確保你使用下面這樣的占位符?來進行引用參數: >>> min_price = 100 >>> for row in db.execute('select * from portfolio where price >= ?', (min_price,)): ... print(row) ... ('GOOG', 100, 490.1) ('AAPL', 50, 545.75) >>> ## 討論 在比較低的級別上和數據庫交互是非常簡單的。你只需提供SQL語句并調用相應的模塊就可以更新或提取數據了。雖說如此,還是有一些比較棘手的細節問題需要你逐個列出去解決。 一個難點是數據庫中的數據和Python類型直接的映射。對于日期類型,通常可以使用 `datetime` 模塊中的 `datetime` 實例,或者可能是 `time` 模塊中的系統時間戳。對于數字類型,特別是使用到小數的金融數據,可以用 `decimal` 模塊中的 `Decimal` 實例來表示。不幸的是,對于不同的數據庫而言具體映射規則是不一樣的,你必須參考相應的文檔。 另外一個更加復雜的問題就是SQL語句字符串的構造。你千萬不要使用Python字符串格式化操作符(如%)或者 `.format()` 方法來創建這樣的字符串。如果傳遞給這些格式化操作符的值來自于用戶的輸入,那么你的程序就很有可能遭受SQL注入攻擊(參考 [http://xkcd.com/327](http://xkcd.com/327) )。查詢語句中的通配符?指示后臺數據庫使用它自己的字符串替換機制,這樣更加的安全。 不幸的是,不同的數據庫后臺對于通配符的使用是不一樣的。大部分模塊使用?或%s,還有其他一些使用了不同的符號,比如:0或:1來指示參數。同樣的,你還是得去參考你使用的數據庫模塊相應的文檔。一個數據庫模塊的 `paramstyle` 屬性包含了參數引用風格的信息。 對于簡單的數據庫數據的讀寫問題,使用數據庫API通常非常簡單。如果你要處理更加復雜的問題,建議你使用更加高級的接口,比如一個對象關系映射ORM所提供的接口。類似 `SQLAlchemy` 這樣的庫允許你使用Python類來表示一個數據庫表,并且能在隱藏底層SQL的情況下實現各種數據庫的操作。
                  <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>

                              哎呀哎呀视频在线观看