python创建sqlite3数据库_Python之Sqlite3数据库基本操作
在一些小的應(yīng)用中,難免會(huì)用到數(shù)據(jù)庫(kù),Sqlite數(shù)據(jù)庫(kù)以其小巧輕便,無(wú)需安裝,移植性好著稱(chēng),本文主要以一個(gè)簡(jiǎn)單的小例子,簡(jiǎn)述Python在Sqlite數(shù)據(jù)庫(kù)方面的應(yīng)用,僅供學(xué)習(xí)分享使用,如有不足之處,還請(qǐng)指正。
涉及知識(shí)點(diǎn)
sqlite3是Python集成的內(nèi)置類(lèi)庫(kù),提供Python操作sqlite3的相關(guān)接口。
sqlite3.connect(dbfile) 創(chuàng)建數(shù)據(jù)庫(kù)連接,返回一個(gè)連接對(duì)象
conn.cursor() 創(chuàng)建游標(biāo)對(duì)象,通過(guò)返回的cursor對(duì)象,執(zhí)行相應(yīng)的SQL語(yǔ)句。
cur.execute(sql, *args) 執(zhí)行語(yǔ)句
conn.commit() 提交執(zhí)行的結(jié)果到數(shù)據(jù)庫(kù)
conn.rollback() 回退執(zhí)行的結(jié)果
cur.close() 關(guān)閉cursor對(duì)象
conn.close() 關(guān)閉連接對(duì)象
基礎(chǔ)操作代碼
關(guān)于Python操作sqlite3的相關(guān)核心代碼,如下所示:
創(chuàng)建數(shù)據(jù)表
1 defcreateDb():2 """創(chuàng)建db數(shù)據(jù)表"""
3 sql = '''
4 create table person (5 id integer primary key autoincrement not null,6 name varchar not null,7 age integer8 )9 '''
10 executeSql(sql)
View Code
插入語(yǔ)句
1 definsertData(name, age):2 """插入數(shù)據(jù)"""
3 sql = 'insert into person (name,age)values(?,?)'
4 executeSql(sql, (name, age))
View Code
update語(yǔ)句
1 defupdateData(id, name, age):2 """通過(guò)ID進(jìn)行修改語(yǔ)句"""
3 sql = 'update person set name=?,age =? where id=?'
4 executeSql(sql, (name, age, id))
View Code
delete語(yǔ)句
1 defdeleteData(id):2 """通過(guò)ID刪除數(shù)據(jù)"""
3 sql = 'delete from person where id=?'
4 executeSql(sql, (id,))
View Code
上面的語(yǔ)句都調(diào)用統(tǒng)一的executeSql方法,如下所示:
1 def executeSql(sql, *args):2 """執(zhí)行更新語(yǔ)句"""
3 conn =sqlite3.connect(dbfile)4 cur =conn.cursor()5 try:6 cur.execute(sql, *args)7 conn.commit()8 print('執(zhí)行成功,影響行數(shù):', cur.rowcount)9 exceptException as e:10 conn.rollback()11 print(e)12 print('執(zhí)行失敗')13 finally:14 cur.close()15 conn.close()
View Code
查詢(xún)語(yǔ)句(無(wú)條件查詢(xún))
1 defqueryData():2 """查詢(xún)語(yǔ)句"""
3 sql = 'select id,name,age from person'
4 executeQuerySql(sql)
View Code
查詢(xún)語(yǔ)句(條件查詢(xún))
1 defqueryDataById(id):2 """通過(guò)id進(jìn)行查詢(xún)"""
3 sql = 'select id,name,age from person where id = ?'
4 executeQuerySql(sql, (id,))
View Code
上面的查詢(xún)語(yǔ)句,都調(diào)用統(tǒng)一的executeQuerySql方法,如下所示:
1 def executeQuerySql(sql, *args):2 """執(zhí)行查詢(xún)語(yǔ)句,可帶參數(shù)"""
3 conn =sqlite3.connect(dbfile)4 cur =conn.cursor()5 try:6 cur.execute(sql, *args)7 persons =cur.fetchall()8 for p inpersons:9 print('當(dāng)前行信息如下:')10 print(p) #返回的是一個(gè)元組tuple
11 print('查詢(xún)成功')12 exceptException as e:13 print(e)14 print('查詢(xún)失敗')15 finally:16 cur.close()17 conn.close()
View Code
關(guān)于本例子的執(zhí)行源碼,可通過(guò)鏈接進(jìn)行下載,如下所示:
Python參數(shù)傳遞方式
Python的參數(shù)傳遞一共有以下五種(位置參數(shù)、默認(rèn)參數(shù)、變長(zhǎng)參數(shù)、關(guān)鍵字參數(shù)、命名關(guān)鍵字參數(shù))
位置傳遞,即參數(shù)按照定義的位置及順序進(jìn)行傳遞,如下所示:
1 #位置傳遞實(shí)例:
2 deffun1(a, b, c):3 return a + b +c4
5
6 print(fun1(1, 2, 3))
View Code
關(guān)鍵字傳遞,即通過(guò)傳遞的參數(shù)的名稱(chēng)進(jìn)行識(shí)別。
1 #關(guān)鍵字傳遞
2 deffun2(a, b, c):3 return a + b +c4
5
6 print(fun2(1, c=3, b=2))
View Code
默認(rèn)值參數(shù)傳遞,即給某些參數(shù)設(shè)置一個(gè)默認(rèn)值,如果不傳則讀取默認(rèn)值。
1 #默認(rèn)值傳遞
2 def fun3(a, b=2, c=3):3 return a + b +c4
5
6 print(fun3(a=1))
View Code
元組傳遞,在定義函數(shù)時(shí),我們有時(shí)候并不知道調(diào)用的時(shí)候會(huì)傳遞多少個(gè)參數(shù)。元組參數(shù)來(lái)進(jìn)行參數(shù)傳遞會(huì)非常有用。如下所示:
1 def fun4(*name):2 print(type(name))3 print(name)4
5
6 fun4((1, 2, 3))
View Code
字典傳遞,雖然通過(guò)元組可以傳遞多個(gè)參數(shù),但如果需要通過(guò)鍵值來(lái)獲取參數(shù)內(nèi)容時(shí),字典則更加方便,如下所示:
1 def fun5(a, b, **kwargs):2 print(type(kwargs)) #
3 print(a, b, kwargs)4
5
6 fun5(2, 3, name='Alan.hsiang', age=23)
View Code
參數(shù)傳遞注意事項(xiàng):
不可變參數(shù)“通過(guò)值”進(jìn)行傳遞
像整數(shù)和字符串這樣的對(duì)象是不可變對(duì)象,它們通過(guò)對(duì)象引用而不是拷貝進(jìn)行傳遞的,但是因?yàn)闊o(wú)論如何都不可能在原處改變不可變對(duì)象,實(shí)際的效果就很像創(chuàng)建了一份拷貝
可變對(duì)象是通過(guò)“指針”進(jìn)行傳遞的
列表和字典這樣的對(duì)象也是通過(guò)對(duì)象引用進(jìn)行傳遞的,這一點(diǎn)與C語(yǔ)言使用指針傳遞數(shù)組很相似,可變對(duì)象能夠在函數(shù)內(nèi)部進(jìn)行原處的改變,這一點(diǎn)和C數(shù)組很像
這些參數(shù)在書(shū)寫(xiě)時(shí)要遵循一定的順序即:位置參數(shù)、默認(rèn)參數(shù)、變長(zhǎng)參數(shù)、關(guān)鍵字參數(shù)、命名關(guān)鍵字參數(shù)
備注
業(yè)精于勤,荒于嬉;行成于思,毀于隨!!!
總結(jié)
以上是生活随笔為你收集整理的python创建sqlite3数据库_Python之Sqlite3数据库基本操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ipa文件怎么安装到iphone_无视签
- 下一篇: 《游戏王:卡片力量4》游戏模式介绍