当前位置: 首页 > article >正文

数据库之 MongoDB and SQLite

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 pymongomyclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["runoobdb"]

注意: 在 MongoDB 中,数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。

(五)判断数据库是否已存在

我们可以读取 MongoDB 中的所有数据库,并判断指定的数据库是否存在:

import pymongomyclient = 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 pymongomyclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["runoobdb"]mycol = mydb["sites"]

注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

(七)判断集合是否已存在

我们可以读取 MongoDB 数据库中的所有集合,并判断指定的集合是否存在:

import pymongomyclient = 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 sqlite3conn = 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()

 

效果图如下:

 




 

转载于:https://www.cnblogs.com/sgy614092725/p/shiguiyu17.html

http://www.lryc.cn/news/2417408.html

相关文章:

  • img文件制作linux启动u盘,制作Linux的U盘启动盘
  • Python后端---使用Django+Mysql搭建一个简单的网站
  • 1.4种权限控制
  • Oracle INSERT INTO的几种用法
  • 效率工具:分享7款实用的任务管理软件,值得收藏!
  • d3dx9_25.dll文件丢失的解决方法
  • 【系统分析与设计】UML协作图绘制方法(真の能看懂~!)
  • Linux export 命令用法
  • 【数理逻辑】范式 ( 合取范式 | 析取范式 | 大项 | 小项 | 极大项 | 极小项 | 主合取范式 | 主析取范式 | 等值演算方法求主析/合取范式 | 真值表法求主析/合取范式 )
  • ant man什么意思_ant是什么意思_ant的翻译_音标_读音_用法_例句_爱词霸在线词典...
  • WinRunner使用经验介绍
  • 机器学习分类算法之XGBoost(集成学习算法)
  • 超市综合管理信息系统(源程序+论文+PPT)部门员工考勤管理商品采购供应商商品销售企业财务信息管理模块
  • 安卓SDK——ShareSDK
  • DWDM原理与光纤传输
  • mRMR
  • wpf RichTextBox绑定文字
  • pmp全真模拟题100道(含答案)
  • 流量劫持原理解析、流量劫持怎么办怎么解决
  • 浅谈LigerUi Tree(树)
  • 期末大作业 个人口令管理系统(密码学)
  • 双归上行--主备
  • Halcon 3D 常见算子描述
  • 万能DOS启动盘制作全攻略!(软盘+光盘+U盘+硬盘+NTFS+应急实用工具)
  • Java语言中关键字strictfp的用途
  • 文件安全之只允许网站内打开,禁止单独打开下载
  • Kafka架构详解及安装部署
  • applet java_Java applet 类
  • 用 Python 图像识别打造一个小狗分类器
  • JAVA学习笔记24——Dubbo、zookeeper相关讲解及实战入门