一、如何進入sqlite3互動模式進行指令操作?
1、确認sqlite3是否已經安裝
進去python指令行,執行
1
2
<code>>>> </code><code>import</code> <code>sqlite3</code>
<code>>>></code>
沒有報錯,說明sqlite3已經成功安裝了
2、如何進入sqlite3指令行
<code>sqlite3 </code><code>/path/to/dbname</code>
直接執行sqlite3 加資料庫名即可
3
4
<code> </code><code>~ sqlite3 ~</code><code>/</code><code>Downloads</code><code>/</code><code>django_test</code><code>/</code><code>cmdb</code><code>/</code><code>db.sqlite3 </code>
<code>sqlite3SQLite version </code><code>3.14</code><code>.</code><code>0</code> <code>2016</code><code>-</code><code>07</code><code>-</code><code>26</code> <code>15</code><code>:</code><code>17</code><code>:</code><code>14</code>
<code>Enter </code><code>".help"</code> <code>for</code> <code>usage hints.</code>
<code>sqlite></code>
3、.tables :檢視所有表
5
6
7
8
<code>sqlite> .tables</code>
<code>auth_group django_content_type </code>
<code>auth_group_permissions django_migrations </code>
<code>auth_permission django_session </code>
<code>auth_user ucloud_project </code>
<code>auth_user_groups ucloud_region </code>
<code>auth_user_user_permissions ucloud_uhost </code>
<code>django_admin_log ucloud_zone</code>
4、查詢表中總的資料條目數
<code>select count() </code><code>from</code> <code>TableName;</code>
例如:
<code>sqlite> select count() </code><code>from</code> <code>ucloud_zone;</code>
<code>11</code>
<code>sqlite> select count() </code><code>from</code> <code>ucloud_uhost;</code>
<code>147</code>
<code>sqlite> select count() </code><code>from</code> <code>ucloud_project;</code>
<code>10</code>
5、執行多條查詢語句
<code>sqlite> select</code>
<code> </code><code>...> (select count(</code><code>1</code><code>) </code><code>from</code> <code>ucloud_uhost) as uhost,</code>
<code> </code><code>...> (select count(</code><code>1</code><code>) </code><code>from</code> <code>ucloud_project) as project,</code>
<code> </code><code>...> (select count(</code><code>1</code><code>) </code><code>from</code> <code>ucloud_region) as region</code>
<code> </code><code>...> ;</code>
<code>147</code><code>|</code><code>10</code><code>|</code><code>8</code>
您可以使用下列的點指令來格式化輸出為本教程下面所列出的格式:
更多指令檢視:
<a href="http://www.runoob.com/sqlite/sqlite-commands.html" target="_blank">http://www.runoob.com/sqlite/sqlite-commands.html</a>
二、python如何執行sqlite查詢指令
python執行sqlite指令的流程:
<code>1</code><code>、cx </code><code>=</code> <code>sqlite3.connect("db.sqlite3)</code>
建立或打開資料庫檔案,如果資料庫檔案不存在,則建立,存在,則打開該檔案。cx為資料庫連接配接對象,它可以有以下操作: commit()--事務送出 rollback()--事務復原 close()--關閉一個資料庫連接配接 cursor()--建立一個遊标
<code>2</code><code>、cursor </code><code>=</code> <code>cx.cursor()</code>
定義了一個遊标。遊标對象有以下的操作: execute()--執行sql語句 executemany--執行多條sql語句 close()--關閉遊标 fetchone()--從結果中取一條記錄 fetchmany()--從結果中取多條記錄 fetchall()--從結果中取出多條記錄 scroll()--遊标滾動 關于對象的方法可以去 Python 首頁上檢視DB API的詳細文檔
<code>3</code><code>、 cursor.execute(</code><code>"""</code>
<code>... select</code>
<code>... (select count(1) from ucloud_uhost) as uhost</code>
<code>... """</code><code>)</code>
cursor.execute(sql語句)是執行sql語句
<code>4</code><code>、cursor.close()</code>
關閉遊标
下面是操作資料庫的過程
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<code>>>> </code><code>from</code> <code>django.db </code><code>import</code> <code>connections</code>
<code>cx </code><code>=</code> <code>sqlite3.connect(</code><code>"/Users/cengchengpeng/Downloads/django_test/cmdb/db.sqlite3"</code><code>)</code>
<code>cursor </code><code>=</code> <code>cx.cursor()</code>
<code>>>> cursor</code>
<code><sqlite3.Cursor </code><code>object</code> <code>at </code><code>0x10b24cb20</code><code>></code>
<code>>>> cursor.execute(</code><code>"""</code>
<code>... (select count(1) from ucloud_uhost) as uhost,</code>
<code>... (select count(1) from ucloud_project) as project,</code>
<code>... (select count(1) from ucloud_zone) as zone</code>
<code>>>> cursor.description</code>
<code>((</code><code>'uhost'</code><code>, </code><code>None</code><code>, </code><code>None</code><code>, </code><code>None</code><code>, </code><code>None</code><code>, </code><code>None</code><code>, </code><code>None</code><code>), (</code><code>'project'</code><code>, </code><code>None</code><code>, </code><code>None</code><code>, </code><code>None</code><code>, </code><code>None</code><code>, </code><code>None</code><code>, </code><code>None</code><code>), (</code><code>'zone'</code><code>, </code><code>None</code><code>, </code><code>None</code><code>, </code><code>None</code><code>, </code><code>None</code><code>, </code><code>None</code><code>, </code><code>None</code><code>))</code>
<code>>>> columns </code><code>=</code> <code>[_[</code><code>0</code><code>].lower() </code><code>for</code> <code>_ </code><code>in</code> <code>cursor.description]</code>
<code>>>> columns</code>
<code>[</code><code>'uhost'</code><code>, </code><code>'project'</code><code>, </code><code>'zone'</code><code>]</code>
<code>>>> </code><code>for</code> <code>_ </code><code>in</code> <code>cursor:</code>
<code>... </code><code>print</code> <code>_</code>
<code>... </code>
<code>(</code><code>147</code><code>, </code><code>10</code><code>, </code><code>11</code><code>)</code>
<code>>>> results </code><code>=</code> <code>[</code><code>dict</code><code>(</code><code>zip</code><code>(columns, _)) </code><code>for</code> <code>_ </code><code>in</code> <code>cursor]</code>
<code>>>> results</code>
<code>[{</code><code>'project'</code><code>: </code><code>10</code><code>, </code><code>'zone'</code><code>: </code><code>11</code><code>, </code><code>'uhost'</code><code>: </code><code>147</code><code>}]</code>
<code>>>> cursor.close()</code>
寫python腳本,來執行sqlite語句
<code>#coding:utf-8</code>
<code>from</code> <code>django.db </code><code>import</code> <code>connections</code>
<code>def</code> <code>open_sql_dict(sql, connection_name</code><code>=</code><code>'default'</code><code>):</code>
<code> </code><code>dbs </code><code>=</code> <code>connections[connection_name]</code>
<code> </code><code>cursor </code><code>=</code> <code>dbs.cursor()</code>
<code> </code><code>cursor.execute(sql)</code>
<code> </code><code>columns </code><code>=</code> <code>[_[</code><code>0</code><code>].lower() </code><code>for</code> <code>_ </code><code>in</code> <code>cursor.description]</code>
<code> </code><code>results </code><code>=</code> <code>[</code><code>dict</code><code>(</code><code>zip</code><code>(columns, _)) </code><code>for</code> <code>_ </code><code>in</code> <code>cursor]</code>
<code> </code><code>cursor.close()</code>
<code> </code><code>return</code> <code>results</code>
本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1904680,如需轉載請自行聯系原作者