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()
效果图如下: