1、Python MongoDB
MongoDB 是目前最流行的 NoSQL 數據庫之一,使用的數據類型 BSON(類似 JSON)。
MongoDB 數據庫安裝與介紹可以查看我們的 MongoDB 教程。
(一)PyMongo
Python 要連接 MongoDB 需要 MongoDB 驅動,這里我們使用 PyMongo 驅動來連接。
(二)pip 安裝
pip 是一個通用的 Python 包管理工具,提供了對 Python 包的查找、下載、安裝、卸載的功能。
安裝 pymongo:
在命令行中用pip安裝 輸入代碼:
$ python3 -m pip3 install pymongo
因為小編已經安裝好了,所以安裝過程就不截圖了。
(三)測試 PyMongo
import pymongo
如果安裝成功,就不會報錯了。
(四)創建數據庫
創建一個數據庫
創建數據庫需要使用 MongoClient 對象,並且指定連接的 URL 地址和要創建的數據庫名。
如下實例中,我們創建的數據庫 runoobdb
import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["runoobdb"]
注意: 在 MongoDB 中,數據庫只有在內容插入后才會創建! 就是說,數據庫創建后要創建集合(數據表)並插入一個文檔(記錄),數據庫才會真正創建。
(五)判斷數據庫是否已存在
我們可以讀取 MongoDB 中的所有數據庫,並判斷指定的數據庫是否存在:
import pymongo myclient = pymongo.MongoClient('mongodb://localhost:27017/') dblist = myclient.list_database_names() # dblist = myclient.database_names() if "runoobdb" in dblist: print("數據庫已存在!")
注意:database_names 在最新版本的 Python 中已廢棄,Python3.7+ 之后的版本改為了 list_database_names()。
(六)創建集合
MongoDB 中的集合類似 SQL 的表。
MongoDB 使用數據庫對象來創建集合,實例如下:
import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["runoobdb"] mycol = mydb["sites"]
注意: 在 MongoDB 中,集合只有在內容插入后才會創建! 就是說,創建集合(數據表)后要再插入一個文檔(記錄),集合才會真正創建。
(七)判斷集合是否已存在
我們可以讀取 MongoDB 數據庫中的所有集合,並判斷指定的集合是否存在:
import pymongo myclient = pymongo.MongoClient('mongodb://localhost:27017/') mydb = myclient['runoobdb'] collist = mydb. list_collection_names() # collist = mydb.collection_names() if "sites" in collist: # 判斷 sites 集合是否存在 print("集合已存在!")
注意:collection_names 在最新版本的 Python 中已廢棄,Python3.7+ 之后的版本改為了 list_collection_names()。
2、SQLite - Python
(一)安裝
SQLite3 可使用 sqlite3 模塊與 Python 進行集成。sqlite3 模塊是由 Gerhard Haring 編寫的。它提供了一個與 PEP 249 描述的 DB-API 2.0 規范兼容的 SQL 接口。您不需要單獨安裝該模塊,因為 Python 2.5.x 以上版本默認自帶了該模塊。
為了使用 sqlite3 模塊,您首先必須創建一個表示數據庫的連接對象,然后您可以有選擇地創建光標對象,這將幫助您執行所有的 SQL 語句。
(三)Python sqlite3 模塊 API
以下是重要的 sqlite3 模塊程序,可以滿足您在 Python 程序中使用 SQLite 數據庫的需求。如果您需要了解更多細節,請查看 Python sqlite3 模塊的官方文檔。
(四)連接數據庫
下面的 Python 代碼顯示了如何連接到一個現有的數據庫。如果數據庫不存在,那么它就會被創建,最后將返回一個數據庫對象。
import sqlite3 conn = sqlite3.connect('test.db') print ("Opened database successfully")
在這里,您也可以把數據庫名稱復制為特定的名稱 :memory:,這樣就會在 RAM 中創建一個數據庫。現在,讓我們來運行上面的程序,在當前目錄中創建我們的數據庫 test.db。您可以根據需要改變路徑。保存上面代碼到 sqlite.py 文件中,並按如下所示執行。如果數據庫成功創建,那么會顯示下面所示的消息:
(五)有關sqlite的增刪查改的操作
1 、插入操作
下面的Python程序顯示了如何在上面創建的 COMPANY 表中創建記錄:
1 #!/usr/bin/python 2 3 import sqlite3 4 5 conn = sqlite3.connect('test.db') 6 c = conn.cursor() 7 print "Opened database successfully"; 8 9 c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ 10 VALUES (1, 'Paul', 32, 'California', 20000.00 )"); 11 12 c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ 13 VALUES (2, 'Allen', 25, 'Texas', 15000.00 )"); 14 15 c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ 16 VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )"); 17 18 c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ 19 VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )"); 20 21 conn.commit() 22 print "Records created successfully"; 23 conn.close()
運行結果如下:
Opened database successfully Records created successfully
2、selece操作
下面的 Python 程序顯示了如何從前面創建的 COMPANY 表中獲取並顯示記錄:
1 #!/usr/bin/python 2 3 import sqlite3 4 5 conn = sqlite3.connect('test.db') 6 c = conn.cursor() 7 print "Opened database successfully"; 8 9 cursor = c.execute("SELECT id, name, address, salary from COMPANY") 10 for row in cursor: 11 print "ID = ", row[0] 12 print "NAME = ", row[1] 13 print "ADDRESS = ", row[2] 14 print "SALARY = ", row[3], "\n" 15 16 print "Operation done successfully"; 17 conn.close()
運行結果如下:
Opened database successfully ID = 1 NAME = Paul ADDRESS = California SALARY = 20000.0 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000.0 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000.0 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000.0 Operation done successfully
下面我們就用sqlite來操作我們的數據庫吧
1、打開我們存為csv文件的數據:如下

因為數據太多了,所以就不一一展示了。
2、我們運用上次的sqlite學習的知識,把上述csv文件的數據都寫進數據庫中。代碼如下
import csv import sqlite3 import csv import sqlite3 def writedate(roadpath): csv_file = csv.reader(open("F:\\python\csvData.csv", "r")) lst_all = [] for i in csv_file: lst_all.append(i) con = sqlite3.connect("10石貴雨.db") cur = con.cursor() cur.execute("create table ad(a,b,c,d,e,f,g,h,i,j,k,l,m,n)") #創建一個表 for j in range(len(lst_all)): cur.execute("insert into ad values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)", (lst_all[j][0], lst_all[j][1], lst_all[j][2], lst_all[j][3], lst_all[j][4], lst_all[j][5], lst_all[j][6], lst_all[j][7], lst_all[j][8], lst_all[j][9], lst_all[j][10], lst_all[j][11], lst_all[j][12], lst_all[j][13])) cur.execute("select * from ad ") #顯示寫進數據庫中的所有內容 #print(cur.fetchall()) con.commit() con.close() def destroyTable(dbName): # 連接數據庫 connect = sqlite3.connect(dbName) # 刪除表 connect.execute("DROP TABLE {}".format("ad")) # 提交事務 connect.commit() # 斷開連接 connect.close() def searchData(roadpath): con = sqlite3.connect("10石貴雨.db") cur = con.cursor() cur.execute("select * from ad where b= '廣東技術師范大學'") print(cur.fetchall()) con.commit() con.close() def main(): writedate("F:\\python\csvData.csv") searchData("F:\\python\csvData.csv") destroyTable("10石貴雨.db") main()
效果圖如下:
