sqlite3常用命令以及django如何操作sqlite3數(shù)據(jù)庫

一笨觅、如何進(jìn)入sqlite3交互模式進(jìn)行命令操作?

1票顾、確認(rèn)sqlite3是否已經(jīng)安裝

進(jìn)去python命令行志膀,執(zhí)行

>>> import sqlite3
>>>

沒有報錯乎芳,說明sqlite3已經(jīng)成功安裝了

2哆姻、如何進(jìn)入sqlite3命令行

sqlite3 /path/to/dbname

直接執(zhí)行sqlite3 加數(shù)據(jù)庫名即可

 ~ sqlite3 ~/Downloads/django_test/cmdb/db.sqlite3 
sqlite3SQLite version 3.14.0 2016-07-26 15:17:14
Enter ".help" for usage hints.
sqlite>

3预吆、.tables :查看所有表

sqlite> .tables
auth_group                  django_content_type       
auth_group_permissions      django_migrations         
auth_permission             django_session            
auth_user                   ucloud_project            
auth_user_groups            ucloud_region             
auth_user_user_permissions  ucloud_uhost              
django_admin_log            ucloud_zone

4薄嫡、查詢表中總的數(shù)據(jù)條目數(shù)

select count() from TableName;

例如:

sqlite> select count() from ucloud_zone;
11
sqlite> select count() from ucloud_uhost;
147
sqlite> select count() from ucloud_project;
10

5饥努、執(zhí)行多條查詢語句

sqlite> select
   ...> (select count(1) from ucloud_uhost) as uhost,
   ...> (select count(1) from ucloud_project) as project,
   ...> (select count(1) from ucloud_region) as region
   ...> ;
147|10|8

6捡鱼、格式化輸出

您可以使用下列的點命令來格式化輸出為本教程下面所列出的格式:

sqlite>.header on
sqlite>.mode column
sqlite>.timer on
sqlite>

更多命令查看:

http://www.runoob.com/sqlite/sqlite-commands.html

二、python如何執(zhí)行sqlite查詢命令

python執(zhí)行sqlite命令的流程:

1酷愧、cx = sqlite3.connect("db.sqlite3)

創(chuàng)建或打開數(shù)據(jù)庫文件驾诈,如果數(shù)據(jù)庫文件不存在,則創(chuàng)建溶浴,存在乍迄,則打開該文件。cx為數(shù)據(jù)庫連接對象士败,它可以有以下操作: commit()--事務(wù)提交 rollback()--事務(wù)回滾 close()--關(guān)閉一個數(shù)據(jù)庫連接 cursor()--創(chuàng)建一個游標(biāo)

2闯两、cursor = cx.cursor()

定義了一個游標(biāo)。游標(biāo)對象有以下的操作: execute()--執(zhí)行sql語句 executemany--執(zhí)行多條sql語句 close()--關(guān)閉游標(biāo) fetchone()--從結(jié)果中取一條記錄 fetchmany()--從結(jié)果中取多條記錄 fetchall()--從結(jié)果中取出多條記錄 scroll()--游標(biāo)滾動 關(guān)于對象的方法可以去 Python 主頁上查看DB API的詳細(xì)文檔

3谅将、 cursor.execute("""
... select
... (select count(1) from ucloud_uhost) as uhost
... """)

cursor.execute(sql語句)是執(zhí)行sql語句

4漾狼、cursor.close()

關(guān)閉游標(biāo)

下面是操作數(shù)據(jù)庫的過程

>>> import sqlite3
>>> from django.db import connections
cx = sqlite3.connect("/Users/cengchengpeng/Downloads/django_test/cmdb/db.sqlite3")
cursor = cx.cursor()
>>> cursor
<sqlite3.Cursor object at 0x10b24cb20>
>>> cursor.execute("""
... select
... (select count(1) from ucloud_uhost) as uhost,
... (select count(1) from ucloud_project) as project,
... (select count(1) from ucloud_zone) as zone
... """)
<sqlite3.Cursor object at 0x10b24cb20>
>>> cursor.description
(('uhost', None, None, None, None, None, None), ('project', None, None, None, None, None, None), ('zone', None, None, None, None, None, None))
>>> columns = [_[0].lower() for _ in cursor.description]
>>> columns
['uhost', 'project', 'zone']
>>> for _ in cursor:
...     print _
... 
(147, 10, 11)
>>> results = [dict(zip(columns, _)) for _ in cursor]
>>> results
>>> results
[{'project': 10, 'zone': 11, 'uhost': 147}]
>>> cursor.close()

寫python腳本,來執(zhí)行sqlite語句

#coding:utf-8
from django.db import connections

def open_sql_dict(sql, connection_name='default'):
    dbs = connections[connection_name]
    cursor = dbs.cursor()
    cursor.execute(sql)
    columns = [_[0].lower() for _ in cursor.description]
    results = [dict(zip(columns, _)) for _ in cursor]
    cursor.close()
    return results

這里腳本里面饥臂,用到了zip()方法和dict()方法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逊躁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子隅熙,更是在濱河造成了極大的恐慌稽煤,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件囚戚,死亡現(xiàn)場離奇詭異酵熙,居然都是意外死亡,警方通過查閱死者的電腦和手機弯淘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門绿店,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人庐橙,你說我怎么就攤上這事假勿。” “怎么了态鳖?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵转培,是天一觀的道長。 經(jīng)常有香客問我浆竭,道長浸须,這世上最難降的妖魔是什么惨寿? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮删窒,結(jié)果婚禮上裂垦,老公的妹妹穿的比我還像新娘。我一直安慰自己肌索,他們只是感情好蕉拢,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著诚亚,像睡著了一般晕换。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上站宗,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天闸准,我揣著相機與錄音,去河邊找鬼梢灭。 笑死夷家,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的或辖。 我是一名探鬼主播瘾英,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼枣接,長吁一口氣:“原來是場噩夢啊……” “哼颂暇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起但惶,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤耳鸯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后膀曾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體县爬,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年添谊,在試婚紗的時候發(fā)現(xiàn)自己被綠了财喳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡斩狱,死狀恐怖耳高,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情所踊,我是刑警寧澤泌枪,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站秕岛,受9級特大地震影響碌燕,放射性物質(zhì)發(fā)生泄漏误证。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一修壕、第九天 我趴在偏房一處隱蔽的房頂上張望愈捅。 院中可真熱鬧,春花似錦慈鸠、人聲如沸改鲫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽像棘。三九已至,卻和暖如春壶冒,著一層夾襖步出監(jiān)牢的瞬間缕题,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工胖腾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留烟零,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓咸作,卻偏偏與公主長得像锨阿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子记罚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容