天天看點

sqlite3常用指令以及django如何操作sqlite3資料庫

一、如何進入sqlite3互動模式進行指令操作?

1、确認sqlite3是否已經安裝

進去python指令行,執行

1

2

<code>&gt;&gt;&gt; </code><code>import</code> <code>sqlite3</code>

<code>&gt;&gt;&gt;</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&gt;</code>

3、.tables :檢視所有表

5

6

7

8

<code>sqlite&gt; .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&gt; select count() </code><code>from</code> <code>ucloud_zone;</code>

<code>11</code>

<code>sqlite&gt; select count() </code><code>from</code> <code>ucloud_uhost;</code>

<code>147</code>

<code>sqlite&gt; select count() </code><code>from</code> <code>ucloud_project;</code>

<code>10</code>

5、執行多條查詢語句

<code>sqlite&gt; select</code>

<code>   </code><code>...&gt; (select count(</code><code>1</code><code>) </code><code>from</code> <code>ucloud_uhost) as uhost,</code>

<code>   </code><code>...&gt; (select count(</code><code>1</code><code>) </code><code>from</code> <code>ucloud_project) as project,</code>

<code>   </code><code>...&gt; (select count(</code><code>1</code><code>) </code><code>from</code> <code>ucloud_region) as region</code>

<code>   </code><code>...&gt; ;</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>&gt;&gt;&gt; </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>&gt;&gt;&gt; cursor</code>

<code>&lt;sqlite3.Cursor </code><code>object</code> <code>at </code><code>0x10b24cb20</code><code>&gt;</code>

<code>&gt;&gt;&gt; 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>&gt;&gt;&gt; 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>&gt;&gt;&gt; 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>&gt;&gt;&gt; columns</code>

<code>[</code><code>'uhost'</code><code>, </code><code>'project'</code><code>, </code><code>'zone'</code><code>]</code>

<code>&gt;&gt;&gt; </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>&gt;&gt;&gt; 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>&gt;&gt;&gt; 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>&gt;&gt;&gt; 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,如需轉載請自行聯系原作者