數據庫支持

目錄

1.Python數據庫API

1.1 全局變量

1.2 異常

1.3 連接和遊標

1.4 類型

2. SQLite和PySQLite


本章討論Python數據庫API,並介紹如何使用這個API來執行一些基本的SQL。本節使用簡單的數據庫SQLite,當然目前還有很多流行的商業數據庫,如Oracle和SQL Server。

1.Python數據庫API

1.1 全局變量

數據庫模塊包含三個全局變量,它們描述了模塊的特徵。該API設計得很靈活,無需進行太多包裝就能配合多種不同的底層機制使用。三個全局變量的定義如下:

  • apilevel:使用的Python DB API版本,目前有1.0和2.0 兩種值。
  • threadsafety:模塊的線程安全程度,是一個[0,3]的整數。0表示線程不能共享模塊,而3表示模塊是絕對線程安全的。1表示線程可以共享模塊本身,但不能共享連接。2表示線程可共享模塊和連接,但是不能共享遊標。
  • paramstyle:在SQL查詢中使用哪種參數風格。

1.2 異常

DB API定義了多種異常,讓我們能夠細緻的處理錯誤:

1.3 連接和遊標

要使用底層的數據庫系統,必須先連接它,爲此可使用函數connect。該函數接收多個參數,具體參數如下:

函數connect返回一個連接對象,表示當前到數據庫的會話。該連接對象主要有以下方法:

方法rollback()可能不可用,因爲並非所有的數據庫都是支持事務。可用時,這個方法撤銷所有未提交的事務。關閉連接時,如果還有未提交的事務,將隱式地回滾他們,但僅當數據庫支持回滾時才如此。

我們使用遊標來執行SQL查詢和查看結果。cursor遊標對象支持的方法比較多:

遊標對象主要有以下幾個屬性:

1.4 類型

爲了能夠與底層SQL數據庫正確的互操作,DB API定義了一些構造函數和常量,用於提供特殊的類型和值:

2. SQLite和PySQLite

目前市面上有很多可用的數據庫,它們都有相應的Python模塊。我們選用SQLite作爲數據庫,該數據庫引擎可直接使用本地文件,且不需要集中式數據庫存儲機制。

要使用Python標準庫中的SQLite,可通過導入模塊sqlite3來導入它,然後,就可以直接創建到數據庫文件的連接。爲此,只需要提供一個文件名(可以是文件的相對路徑或絕對路徑);如果指定的文件不存在,將自動創建它。我們一個示例程序,來演示對SQLite數據庫的一系列操作:

數據文件內容如下:

1 張三 10 98.8 2010-10-31 16:44:42 優秀
2 李四 11 76.4 2008-05-21 17:43:02 良好
3 王五 10 88.8 2006-06-01 09:41:12 良好
4 劉六 14 60.1 2012-12-11 12:24:25 及格

初始化的代碼:

import sqlite3

conn = sqlite3.connect(r'D:\text\somedatabase.db')
curs = conn.cursor()

curs.execute('''
          create table student(
          id number primary key,
          name string,
          age number,
          score float,
          birth date,
          add_time time,
          desc text
          )
          ''')

insert = 'insert into student values (?,?,?,?,?,?,?)'

for line in open(r'D:\text\student.txt',encoding='UTF-8'):
    fields = line.split(' ')
    curs.execute(insert, fields)
conn.commit()
conn.close()

執行查詢操作

import sqlite3

conn = sqlite3.connect(r'D:\text\somedatabase.db')
curs = conn.cursor()
query = 'select * from student where id = 1'
print(query)

curs.execute(query)
for row in curs.fetchall():
    print(row)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章