Python之Sqlite3數據庫基本操做

在一些小的應用中,不免會用到數據庫,Sqlite數據庫以其小巧輕便,無需安裝,移植性好著稱,本文主要以一個簡單的小例子,簡述Python在Sqlite數據庫方面的應用,僅供學習分享使用,若有不足之處,還請指正。sql

涉及知識點

  1. sqlite3是Python集成的內置類庫,提供Python操做sqlite3的相關接口。
  2. sqlite3.connect(dbfile) 建立數據庫鏈接,返回一個鏈接對象
  3. conn.cursor() 建立遊標對象,經過返回的cursor對象,執行相應的SQL語句。
  4. cur.execute(sql, *args) 執行語句
  5. conn.commit() 提交執行的結果到數據庫
  6. conn.rollback() 回退執行的結果
  7. cur.close() 關閉cursor對象
  8. conn.close() 關閉鏈接對象

基礎操做代碼

關於Python操做sqlite3的相關核心代碼,以下所示:數據庫

建立數據表數組

 1 def createDb():
 2     """建立db數據表"""
 3     sql = '''
 4     create table person (
 5     id integer primary key  autoincrement  not null,
 6     name varchar not null,
 7     age integer
 8     )
 9     '''
10     executeSql(sql)
View Code

插入語句ide

1 def insertData(name, age):
2     """插入數據"""
3     sql = 'insert into person (name,age)values(?,?)'
4     executeSql(sql, (name, age))
View Code

update語句函數

1 def updateData(id, name, age):
2     """經過ID進行修改語句"""
3     sql = 'update  person set name=?,age =?  where id=?'
4     executeSql(sql, (name, age, id))
View Code

delete語句學習

1 def deleteData(id):
2     """經過ID刪除數據"""
3     sql = 'delete from person  where id=?'
4     executeSql(sql, (id,))
View Code

上面的語句都調用統一的executeSql方法,以下所示:fetch

 1 def executeSql(sql, *args):
 2     """執行更新語句"""
 3     conn = sqlite3.connect(dbfile)
 4     cur = conn.cursor()
 5     try:
 6         cur.execute(sql, *args)
 7         conn.commit()
 8         print('執行成功,影響行數:', cur.rowcount)
 9     except Exception as e:
10         conn.rollback()
11         print(e)
12         print('執行失敗')
13     finally:
14         cur.close()
15         conn.close()
View Code

查詢語句(無條件查詢)ui

1 def queryData():
2     """查詢語句"""
3     sql = 'select id,name,age from person '
4     executeQuerySql(sql)
View Code

查詢語句(條件查詢)spa

1 def queryDataById(id):
2     """經過id進行查詢"""
3     sql = 'select id,name,age from person where id = ? '
4     executeQuerySql(sql, (id,))
View Code

上面的查詢語句,都調用統一的executeQuerySql方法,以下所示:3d

 1 def executeQuerySql(sql, *args):
 2     """執行查詢語句,可帶參數"""
 3     conn = sqlite3.connect(dbfile)
 4     cur = conn.cursor()
 5     try:
 6         cur.execute(sql, *args)
 7         persons = cur.fetchall()
 8         for p in persons:
 9             print('當前行信息以下:')
10             print(p)  # 返回的是一個元組tuple
11         print('查詢成功')
12     except Exception as e:
13         print(e)
14         print('查詢失敗')
15     finally:
16         cur.close()
17         conn.close()
View Code

 關於本例子的執行源碼,可經過連接進行下載,以下所示:

源碼連接

Python參數傳遞方式

Python的參數傳遞一共有如下五種(位置參數、默認參數、變長參數、關鍵字參數、命名關鍵字參數)

位置傳遞,即參數按照定義的位置及順序進行傳遞,以下所示:

1 # 位置傳遞實例:
2 def fun1(a, b, c):
3     return a + b + c
4 
5 
6 print(fun1(1, 2, 3))
View Code

關鍵字傳遞,即經過傳遞的參數的名稱進行識別。

1 # 關鍵字傳遞
2 def fun2(a, b, c):
3     return a + b + c
4 
5 
6 print(fun2(1, c=3, b=2))
View Code

默認值參數傳遞,即給某些參數設置一個默認值,若是不傳則讀取默認值。

1 # 默認值傳遞
2 def fun3(a, b=2, c=3):
3     return a + b + c
4 
5 
6 print(fun3(a=1))
View Code

元組傳遞,在定義函數時,咱們有時候並不知道調用的時候會傳遞多少個參數。元組參數來進行參數傳遞會很是有用。以下所示:

1 def fun4(*name):
2     print(type(name))
3     print(name)
4 
5 
6 fun4((1, 2, 3))
View Code

字典傳遞,雖然經過元組能夠傳遞多個參數,但若是須要經過鍵值來獲取參數內容時,字典則更加方便,以下所示:

1 def fun5(a, b, **kwargs):
2     print(type(kwargs))  # <class 'dict'>
3     print(a, b, kwargs)
4 
5 
6 fun5(2, 3, name='Alan.hsiang', age=23)
View Code

參數傳遞注意事項:

  • 不可變參數「經過值」進行傳遞
    • 像整數和字符串這樣的對象是不可變對象,它們經過對象引用而不是拷貝進行傳遞的,可是由於不管如何都不可能在原處改變不可變對象,實際的效果就很像建立了一份拷貝
  • 可變對象是經過「指針」進行傳遞的
    • 列表和字典這樣的對象也是經過對象引用進行傳遞的,這一點與C語言使用指針傳遞數組很類似,可變對象可以在函數內部進行原處的改變,這一點和C數組很像
  • 這些參數在書寫時要遵循必定的順序即:位置參數、默認參數、變長參數、關鍵字參數、命名關鍵字參數

備註

 業精於勤,荒於嬉;行成於思,毀於隨!!!

相關文章
相關標籤/搜索