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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # pyDAL 教程 > 原文: [http://zetcode.com/python/pydal/](http://zetcode.com/python/pydal/) pyDAL 教程展示了如何使用 pyDAL 數據庫抽象層在 Python 中對數據庫進行編程。 我們在代碼示例中使用 SQLite。 ## pyDAL pyDAL 是純 Python 數據庫抽象層。 pyDAL 模塊以指定的方言為數據庫后端動態生成 SQL。 生成的代碼可在不同類型的數據庫之間移植。 ## pyDAL 安裝 ```py $ sudo pip3 install pyDAL ``` 我們使用`pip3`工具安裝 pyDAL。 ## pyDAL 創建數據庫表 在下面的示例中,我們創建一個數據庫表。 `create_table.py` ```py #!/usr/bin/env python3 from pydal import DAL, Field db = DAL('sqlite://test.db', folder='dbs') try: db.define_table('cars', Field('name'), Field('price', type='integer')) db.cars.insert(name='Audi', price=52642) db.cars.insert(name='Skoda', price=9000) db.cars.insert(name='Volvo', price=29000) db.cars.insert(name='Bentley', price=350000) db.cars.insert(name='Citroen', price=21000) db.cars.insert(name='Hummer', price=41400) db.cars.insert(name='Volkswagen', price=21600) finally: if db: db.close() ``` 該示例創建一個具有七行的`cars`表。 ```py db = DAL('sqlite://test.db', folder='dbs') ``` `DAL`代表數據庫連接。 它以數據庫連接字符串作為第一個參數。 我們連接到 SQLite 數據庫。 ```py db.define_table('cars', Field('name'), Field('price', type='integer')) ``` 數據庫表由`define_table()`定義。 如果不存在,則創建它。 它有兩個字段:名稱和價格。 ID 字段會自動生成。 ```py db.cars.insert(name='Audi', price=52642) ``` 我們使用`insert()`將新行插入表中。 在`db`連接的`cars`表上調用該方法。 ```py $ ls dbs c95cf9bab36fcb04c2424cdf9be0f6e3_cars.table sql.log test.db ``` 除了`test.db`數據庫之外,我們還有一個擴展名為`.table`的遷移文件和一個日志文件。 ## pyDAL 刪除表 使用`drop()`刪除了數據庫表。 `drop_table.py` ```py #!/usr/bin/env python3 from pydal import DAL, Field try: db = DAL('sqlite://test.db', folder='dbs') cars = db.define_table('cars', Field('name'), Field('price', 'integer')) cars.drop() finally: if db: db.close() ``` 在示例中,我們使用`drop()`方法刪除`cars`表。 ## pyDAL 選擇行 使用`select()`選擇表行。 `select_all_rows.py` ```py #!/usr/bin/env python3 from pydal import DAL, Field try: db = DAL('sqlite://test.db', folder='dbs') db.define_table('cars', Field('name'), Field('price')) rows = db().select(db.cars.ALL) for row in rows: print("{} {} {}".format(row['id'], row['name'], row['price'])) finally: if db: db.close() ``` 在示例中,我們從`cars`表中檢索所有行。 ```py rows = db().select(db.cars.ALL) ``` 我們使用`select()`方法獲取所有行。 `db.cars.ALL`指示從表中選擇所有列。 ```py for row in rows: print("{} {} {}".format(row['id'], row['name'], row['price'])) ``` 我們遍歷每一行并打印其字段。 ```py $ ./select_all_cars.py 1 Audi 52642 2 Skoda 9000 3 Volvo 29000 4 Bentley 350000 5 Citroen 21000 6 Hummer 41400 7 Volkswagen 21600 ``` 這是輸出。 ## pyDAL 排序 以下示例顯示如何使用`pyDAL`排序數據。 `order_by.py` ```py #!/usr/bin/env python3 from pydal import DAL, Field try: db = DAL('sqlite://test.db') db.define_table('cars', Field('name'), Field('price', 'integer')) rows = db(db.cars).select(orderby=db.cars.price) for row in rows: print("{} {} {}".format(row['id'], row['name'], row['price'])) print("**************************************") rows = db(db.cars).select(orderby=~db.cars.price) for row in rows: print("{} {} {}".format(row['id'], row['name'], row['price'])) finally: if db: db.close() ``` 該示例打印表中的所有行,并按價格升序和降序對其進行排序。 ```py rows = db(db.cars).select(orderby=db.cars.price) ``` 通過`select()`方法的`orderby`參數進行排序。 ```py rows = db(db.cars).select(orderby=~db.cars.price) ``` 要按降序排序,我們使用波浪字符。 ```py $ ./order_by.py 5 Citroen 21000 7 Volkswagen 21600 3 Volvo 29000 4 Bentley 350000 6 Hummer 41400 1 Audi 52642 2 Skoda 9000 ************************************** 2 Skoda 9000 1 Audi 52642 6 Hummer 41400 4 Bentley 350000 3 Volvo 29000 7 Volkswagen 21600 5 Citroen 21000 ``` 這是輸出。 ## pyDAL 限制數據輸出 可以使用`select()`方法的`limitby`參數限制數據輸出。 `limit_by.py` ```py #!/usr/bin/env python3 from pydal import DAL, Field try: db = DAL('sqlite://test.db', folder='dbs') db.define_table('cars', Field('name'), Field('price', 'integer')) rows = db(db.cars).select(limitby=(2, 5)) for row in rows: print("{} {} {}".format(row['id'], row['name'], row['price'])) finally: if db: db.close() ``` 在代碼示例中,我們將輸出限制為偏移量為 2 的三行。 ```py $ ./limit_by.py 3 Volvo 29000 4 Bentley 350000 5 Citroen 21000 ``` 這是輸出。 ## pyDAL 計數行 使用`count()`,我們可以獲得表中的行數。 `count_rows.py` ```py #!/usr/bin/env python3 from pydal import DAL, Field try: db = DAL('sqlite://test.db', folder='dbs') db.define_table('cars', Field('name'), Field('price', 'integer')) n = db(db.cars.id).count() print("There are {} rows in the table".format(n)) finally: if db: db.close() ``` 在示例中,我們打印`cars`表中的行數。 ```py $ ./count_rows.py There are 7 rows in the table ``` 表中有七行。 ## pyDAL JSON 輸出 我們可以使用`as_json()`獲得 JSON 格式的數據。 `json_output.py` ```py #!/usr/bin/env python3 from pydal import DAL, Field try: db = DAL('sqlite://test.db', folder='dbs') db.define_table('cars', Field('name'), Field('price', 'integer')) rows = db(db.cars).select() print(rows.as_json()) finally: if db: db.close() ``` 該示例以 JSON 格式顯示所有行。 ```py $ ./json_output.py [{"id": 1, "price": 52642, "name": "Audi"}, {"id": 2, "price": 9000, "name": "Skoda"}, {"id": 3, "price": 29000, "name": "Volvo"}, {"id": 4, "price": 350000, "name": "Bentley"}, {"id": 5, "price": 21000, "name": "Citroen"}, {"id": 6, "price": 41400, "name": "Hummer"}, {"id": 7, "price": 21600, "name": "Volkswagen"}] ``` 這是輸出。 ## pyDAL 最后一個 SQL pyDAL 最后執行的 SQL 可以通過`_lastsql()`找到。 `lastsql.py` ```py #!/usr/bin/env python3 from pydal import DAL, Field try: db = DAL('sqlite://test.db', folder='dbs') db.define_table('cars', Field('name'), Field('price', 'integer')) # we ignore the result db(db.cars.id).select(db.cars.name, db.cars.price) print(db._lastsql) finally: if db: db.close() ``` 在示例中,我們在執行`select`語句時打印 pyDAL 執行的 SQL。 ```py $ ./lastsql.py ('SELECT "cars"."name", "cars"."price" FROM "cars" WHERE ("cars"."id" IS NOT NULL);', 0.0005686283111572266) ``` 該 SQL 由 pyDAL 生成。 ## pyDAL 執行原始 SQL 我們可以使用`executesql()`方法執行原始 SQL。 `raw_sql.py` ```py #!/usr/bin/env python3 from pydal import DAL, Field try: db = DAL('sqlite://test.db', folder='dbs') db.define_table('cars', Field('name'), Field('price', 'integer')) data = db.executesql('SELECT * FROM cars WHERE id=6')[0] print(data) finally: if db: db.close() ``` 在示例中,我們使用`executesql()`執行 SQL `SELECT`語句。 ```py $ ./raw_sql.py (6, 'Hummer', '41400') ``` 這是輸出。 在本教程中,我們使用 pyDAL 處理 SQLite 數據庫。 您可能也對以下相關教程感興趣: [PyMongo 教程](/python/pymongo/), [Peewee 教程](/python/peewee/), [PyMySQL 教程](/python/pymysql/), [SQLite Python 教程](/db/sqlitepythontutorial/)和 [Python 教程](/lang/python/)。
                  <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>

                              哎呀哎呀视频在线观看