<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國際加速解決方案。 廣告
                # 原始 SQL > 原文: [http://zetcode.com/db/sqlalchemy/rawsql/](http://zetcode.com/db/sqlalchemy/rawsql/) 在 SQLite 教程的這一部分中,我們使用原始 SQL。 SQLAlchemy 并不是純粹的 ORM 工具包。 它還允許在需要時執行原始 SQL 語句。 ## 標量數據 在第一個示例中,我們連接到內存中的 SQLite 數據庫并執行一個簡單的 SQL 語句。 `scalar_data.py` ```py #!/usr/bin/python # -*- coding: utf-8 -*- from sqlalchemy import create_engine eng = create_engine('sqlite:///:memory:') with eng.connect() as con: rs = con.execute('SELECT 5') data = rs.fetchone()[0] print "Data: %s" % data ``` 該示例打印由`SELECT`語句返回的值。 ```py eng = create_engine('sqlite:///:memory:') ``` `create_engine`方法創建一個引擎,該引擎用于將 SQL 語句傳遞到數據庫。 該方法將連接字符串作為參數。 我們將連接到內存中的 SQLite 數據庫。 ```py with eng.connect() as con: ``` 使用`connect()`方法,我們連接到連接字符串中指定的數據庫。 ```py rs = con.execute('SELECT 5') ``` 使用連接的`execute()`方法,我們提供了一個簡單的`SELECT` SQL 語句。 ```py data = rs.fetchone()[0] ``` 使用`fetchone()`方法,我們檢索了一行。 從這一行,我們得到標量值。 ```py print "Data: %s" % data ``` 該值將打印到控制臺。 ```py $ ./scalar_data.py Data: 5 ``` 我們執行腳本。 ## PostgreSQL 版本 在下一個示例中,我們連接到 PostgreSQL 數據庫并打印其版本。 `postgres_version.py` ```py #!/usr/bin/python # -*- coding: utf-8 -*- from sqlalchemy import create_engine eng = create_engine('postgresql:///testdb') con = eng.connect() rs = con.execute("SELECT VERSION()") print rs.fetchone() con.close() ``` 要選擇數據庫的版本,我們使用`SELECT VERSION()` SQL 命令。 ```py eng = create_engine('postgresql:///testdb') ``` 我們連接到 PostgreSQL 中的`testdb`數據庫。 我們在連接字符串中不包含用戶名和密碼。 這是因為 PostgreSQL 允許在其信任認證策略中對本地連接不進行認證就進行連接。 ```py rs = con.execute("SELECT VERSION()") print rs.fetchone() ``` 我們執行 SQL 命令并將返回的數據打印到控制臺。 ```py $ ./postgres_version.py (u'PostgreSQL 9.3.9 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4, 64-bit',) ``` 這是一個示例輸出。 ## 創建數據庫表 在下面的示例中,我們將創建一個表并將其填充數據。 `raw_create_table.py` ```py #!/usr/bin/python # -*- coding: utf-8 -*- from sqlalchemy import create_engine from sqlalchemy.sql import text eng = create_engine("mysql://testuser:test623@localhost/testdb") with eng.connect() as con: con.execute(text('DROP TABLE IF EXISTS Cars')) con.execute(text('''CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name TEXT, Price INTEGER)''')) data = ( { "Id": 1, "Name": "Audi", "Price": 52642 }, { "Id": 2, "Name": "Mercedes", "Price": 57127 }, { "Id": 3, "Name": "Skoda", "Price": 9000 }, { "Id": 4, "Name": "Volvo", "Price": 29000 }, { "Id": 5, "Name": "Bentley", "Price": 350000 }, { "Id": 6, "Name": "Citroen", "Price": 21000 }, { "Id": 7, "Name": "Hummer", "Price": 41400 }, { "Id": 8, "Name": "Volkswagen", "Price": 21600 } ) for line in data: con.execute(text("""INSERT INTO Cars(Id, Name, Price) VALUES(:Id, :Name, :Price)"""), **line) ``` 使用綁定參數的后端中立方式創建`Cars`表。 ```py eng = create_engine("mysql://testuser:test623@localhost/testdb") ``` 我們將連接到 MySQL 數據庫。 我們使用特定的 MySQL 連接字符串。 ```py for line in data: con.execute(text("""INSERT INTO Cars(Id, Name, Price) VALUES(:Id, :Name, :Price)"""), **line) ``` 使用`for`循環,我們將數據插入數據庫表中。 數據庫使用不同的綁定參數構造。 借助`text()`函數,我們使用了后端中立的方式來綁定參數。 ```py $ mysql -u testuser -p mysql> USE testdb; mysql> SELECT * FROM Cars; +----+------------+--------+ | Id | Name | Price | +----+------------+--------+ | 1 | Audi | 52642 | | 2 | Mercedes | 57127 | | 3 | Skoda | 9000 | | 4 | Volvo | 29000 | | 5 | Bentley | 350000 | | 6 | Citroen | 21000 | | 7 | Hummer | 41400 | | 8 | Volkswagen | 21600 | +----+------------+--------+ 8 rows in set (0.00 sec) ``` 我們驗證數據。 ## 列名 下面的示例打印`Cars`表的列名。 `raw_column_names.py` ```py #!/usr/bin/python # -*- coding: utf-8 -*- from sqlalchemy import create_engine from sqlalchemy.sql import text eng = create_engine('sqlite:///:memory:') with eng.connect() as con: con.execute(text('''CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name TEXT, Price INTEGER)''')) rs = con.execute(text('SELECT * FROM Cars')) print rs.keys() ``` 該示例在內存中創建一個數據庫表并打印其列名。 ```py rs = con.execute(text('SELECT * FROM Cars')) ``` 在`SELECT`語句中,我們選擇所有列。 ```py print rs.keys() ``` `keys()`方法返回列的名稱。 ```py $ ./raw_column_names.py [u'Id', u'Name', u'Price'] ``` 這是示例的輸出。 在 SQLite 教程的這一部分中,我們使用 SQLAlchemy 執行了原始 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>

                              哎呀哎呀视频在线观看