版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录概述1基于Python访问Neo4j2基于Python访问MongoDB3基于Python访问Redis4小结61基于Python访问Cassandra510.1概述NoSQL数据库管理系统在大数据库生态应用系统架构存储层中起着重要的作用本章内容思维导图2不同类型的应用系统可采用的开发语言JavaPythonC++、C#ScalaGoRubyPerl等各种数据库一般都支持多种程序语言的编程接口,为应用系统数据存储处理编程方面提供了丰富的API和接入技术。310.1概述JAVA访问数据库的技术JDBC引入相关依赖JAR包到工程中;创建链接;开启会话;数据操作;关闭会话;如果数据库支持事务,也可进行事务的提交、回滚等操作;其他持久化中间件产品,常用的有:Hibernate-OGM(ObjectGridMapping)MyBatisSpringData410.1概述Java访问4类NoSQL数据库依赖的Jar包1)Neo4j图数据库/artifact/org.neo4j.driver/neo4j-java-driver510.1概述Java访问4类NoSQL数据库依赖的Jar包(续)2)MongoDB文档数据库
官方提供的驱动文件为mongo-java-driver.jar,当前版本为4.1.0,
下载链接:http://mongodb.github.io/mongo-java-driver/。3)Redis键值数据库jedis是Redis的java版本客户端实现,开发需要的Jar包为jedis.jar,目前版本为3.3。
下载链接:https:///artifact/redis.clients/jedis。610.1概述Java访问4类NoSQL数据库依赖的Jar包(续)4)Cassandra列族数据库Datastax公司提供了Java访问Cassandra的驱动库包。官方链接:https:///en/developer/java-driver/4.3/JPA规范简介JPA(JavaPersistenceAPI)意即Java持久化APIJPA出现主要是为了简化持久层开发以及整合ORM技术JPA包括以下3方面的技术ORM映射元数据,元数据描述对象和表之间的映射关系API:操作实体对象来执行CRUD操作查询语言:通过面向对象而非面向数据库的查询语言查询数据,避免程序与SQL语句紧密耦合710.1概述基于SpringBoot2.0的JavaWeb应用开发技术栈810.1概述SpringData官网:https://spring.io/projects/spring-data针对不同数据库提供了不同的开发模块SpringDataNeo4jSpringDataMongoDBSpringDataRedisSpringDataforApacheCassandraSpringDataAzureCosmosDBSpringDataCouchbaseSpringDataElasticsearchSpringDataJPA……910.1概述目录概述1基于Python访问Neo4j2基于Python访问MongoDB3基于Python访问Redis4小结610基于Python访问Cassandra5P4.2基于Python访问Neo4j基于Python访问Neo4j数据库主要通过py2neo库,下载地址为/v4/。V4版本语法与低版本有差异可以使用如下pip命令安装最新稳定版本。pipinstallpy2neoPython3下安装使用如下命令python3–mpipinstallpy2neo
过程有些长11P4.2基于Python访问Neo4j引入包>>>frompy2neoimportGraph,Node,Relationship#连接neo4j数据库>>>graph=Graph("bolt://localhost:7687",username="neo4j",password="buptyyn")#新增节点>>>node1=Node(lable="Person",name="张三")>>>graph.create(node1)>>>node2=Node(lable="Person",name="李四")>>>graph.create(node2)12P4.2基于Python访问Neo4j新增关系>>>node_1_call_node_2=Relationship(node1,'CALL',node2)#关系属性count值为1>>>node_1_call_node_2['count']=1>>>node_2_call_node_1=Relationship(node2,'CALL',node1)#创建关系>>>graph.create(node_2_call_node_1)>>>graph.create(node_1_call_node_2)13P4.2基于Python访问Neo4j同时新增节点及关系>>>nicole=Node('Person',name='Nicole')>>>adam=Node('Person',name='Adam')>>>graph.create(Relationship(nicole,'KNOWS',adam))14P4.2基于Python访问Neo4j修改节点、关系的属性值#更新关系属性,push提交>>>node_1_call_node_2['count']+=1>>>graph.push(node_1_call_node_2)#更新节点属性,push提交>>>node1['age']=20>>>node2['age']=25>>>graph.push(node1)>>>graph.push(node2)15P4.2基于Python访问Neo4j查询>>>matcher=NodeMatcher(graph)>>>matcher.match("Person",name="KeanuReeves").first()(_22:Person{born:1964,name:'KeanuReeves'})>>>matcher.match(name="张三").first()(_0{age:20,lable:'Person',name:'\u5f20\u4e09'})>>>graph.nodes[22](_22:Person{born:1964,name:'KeanuReeves'})>>>graph.nodes.get(22)(_22:Person{born:1964,name:'KeanuReeves'})16P4.2基于Python访问Neo4j删除节点>>>dntest=Node('Person',name='del-test')>>>graph.create(dntest)>>>matcher.match("Person",name="del-test").first()(_202:Person{name:'del-test'})>>>id_20=graph.evaluate("MATCH(n)whereid(n)=202RETURNn")>>>graph.delete(id_20)17目录概述1基于Python访问Neo4j2基于Python访问MongoDB3基于Python访问Redis4小结618基于Python访问Cassandra510.3基于Python访问MongoDBMongoDB支持很多种访问方式,参见https://docs.MongoDB.com/ecosystem/drivers。基于Python访问MongoDB数据库主要通过pymongo库下载地址https://docs.MongoDB.com/ecosystem/drivers/python/安装命令:pipinstallpymongoPython3下安装:python3–mpipinstallpymongo19课件中示例基于python3.8如果下载失败,也可以用以下代理方式安装
pipinstallpymongo-i/simple/--trusted-host引入包2010.3
基于Python访问MongoDB2110.3基于Python访问MongoDB链接数据库、查询某个集合所有行数据示例如下
>>>importpymongo>>>frompymongoimportMongoClient>>>client=MongoClient()>>>database=client.myTest>>>collection=database.ct>>>rows=collection.find()>>>forrowinrows:print(row)链接数据的另外方法:#mongodb服务的地址和端口号mongo_url=":27017“#连接到mongodb,如果参数不填,默认为“localhost:27017”client=pymongo.MongoClient(mongo_url)如果需要验证身份client=pymongo.MongoClient('mongodb://root:123456@localhost:27017/')#连接到数据库myDatabaseDATABASE="myDatabase"db=client[DATABASE]#连接到集合(表):myDatabase.myCollectionCOLLECTION="myCollection"db_coll=db[COLLECTION]10.3基于Python访问MongoDB2310.3基于Python访问MongoDBPython访问MongoDB,新增文档,语法非常类似例如插入一个bLog数据到posts集合中。
>>>importdatetime >>>post={"author":"Mike", ..."text":"MyfirstbLogpost!", ..."tags":["MongoDB","python","pymongo"], ..."date":datetime.datetime.utcnow()}>>>posts=db.posts >>>post_id=posts.insert_one(post).inserted_id>>>print(post_id)5f38ade676648d13f8a02fb52410.3基于Python访问MongoDB查看当前数据库中所有集合的名称。>>>db.list_collection_names()['posts']使用find_one查看某一文档,也支持查询条件设置。>>>pprint.pprint(posts.find_one())2510.3基于Python访问MongoDBPython访问MongoDB,修改文档
可以增加upsert=True,表示如果没有该条数据则插入一条数据,但这种情况需要插入语句也得包含其它字段,不能只有要更新的字段信息;>>>collection.update_one({"Name":"wang"},{'$set':{"gender":1,"age":19}},upsert=True)<pymongo.results.UpdateResultobjectat0x0000022EF2856780>2610.3基于Python访问MongoDB根据_id查询某个文档操作对比MongoDBshell:db.getCollection('pyuser').find({'_id':ObjectId("5ebd4601a94e93a06cded012")})PyMongo:>>>frombsonimportObjectId>>>collection.find_one({'_id':ObjectId('5ebf8b8914bc01def442a80b')}){'_id':ObjectId('5ebf8b8914bc01def442a80b'),'Name':'wang','age':19,'gender':1}
目录概述1基于Python访问Neo4j2基于Python访问MongoDB3基于Python访问Redis4小结627基于Python访问Cassandra510.4基于Python访问Redis基于Python访问Redis数据库主要通过redis-py实现,下载链接及相关文档参见/andymccurdy/redis-py,安装命令:pipinstallredis如果同时安装了python2.7和3.x版本,建议将其中一个python.exe名称修改下,区分开两个版本,如将3.x的python.exe命名为python3.exe2810.4基于Python访问Redis如果同时安装了两个版本的Python,如果直接执行pip命令,将会把第三方库安装到先安装的python版本环境中;在使用pip安装库时,可限定某个版本Python的pip安装。命令格式:python3–mpipinstallredis课件中示例基于python3.8基于Python访问Redis关键步骤引入相关库建立数据库链接访问数据库关闭数据库链接2910.4基于Python访问Redis30基于Python访问Redis数据库示例如下。
>>>importredis>>>r=redis.Redis(host='localhost',port=6379,db=0)>>>r.set('foo','bar')True>>>r.get('foo')'bar‘如果有密码,如下方式链接:
r=redis.Redis(host="90",port=63279,password="196789")基于Python访问Redis,循环查询当前键列表示例>>>importredis>>>r=redis.Redis()>>>print(client.keys())>>>forkeyinclient.keys():print(key.decode())3110.4基于Python访问Redisclient.keys()返回的是一个列表,列表里是bytes型key,使用for循环把列表元素转换为python中的字符串型数据,循环输出。10.4基于Python访问Redis>>>client.set('pykey','hello!',nx=True)>>>client.set('count',10)True>>>client.incr('count')11>>>client.incr('count',5)16>>>client.decr('count',5)11>>>client.decr('count')10>>>client.expire('count',10)True32nx=True表示键不存在时执行;client.incr实现给第1个参数键增加一个增量,如果省略第二个参数则表示加1;client.decr实现给第1个参数键减少一个量,如果省略第二个参数则表示减1;client.expire用于设置键的ttl;目录概述1基于Python访问Neo4j2基于Python访问MongoDB3基于Python访问Redis4小结633基于Python访问Cassandra510.5基于Python访问Cassandra需要安装驱动cassandra-driver,下载链接及相关文档参见
https:///project/cassandra-driver/该驱动组件由DATASTAX公司开发,并托管到Github上,开源免费,可以采用pip方式进行安装。pipinstallcassandra-driver
或者python3–mpipinstallcassandra-driver关键步骤引入相关库建立数据库链接访问数据库关闭数据库链接3410.5基于Python访问Cassandra1)引入相关库,建立连接,创建会话。
fromcassandra.clusterimportCluster cluster=Cluster(['80']) cluster.port=9042 session=cluster.connect() session=cluster.connect('test_cassandra’)
操作完毕后,可以通过以下方式关闭数据库连接。
cluster.shutdown()
由于Cassandra在分布式部署时采用对等的环形结构,因此IP参数支持逗号隔开的地址列表。3510.5基于Python访问Cassandra2)连接到某个键空间,有两种方法:
session=cluster.connect('test_cassandra') 或者
session.execute("usetest_cassandra")3)执行CQL语句。示例CQL语句如下。session.execute("insertintousers(id,name)values(1,'Zhang');")session.execute("insertintousers(id,name)values(2,'Wang');")rows=session.execute("select*fromusers;")forrinrows:print(r)session.execute("deletefromuserswhereid=2;")3610.5基于Python访问Cassandra当通过session.execute执行查询语句时,可以采用三种方式遍历返回的结果,示例如下。37rows=session.execute('SELECTid,nameFROMusers')forrowinrows:print(row.id,)for(id,name)inrows:print(id,name)forrowinrows:print(row[0],row[1])10.5基于Python访问Cassandra示例:用Python链接该键空间并进行数据访问先建立以下键空间、users表CREATEKeyspacetest_cassandraWITHreplication={'class':'SimpleStrategy','replication_factor':3};usetest_cassandra;CREATETABLEusers(idint,nametext,agetinyint,PRIMARYKEY(id));3810.5基于Python访问Cassandra示例#-*-encoding:utf-8-*-#引入Cluster模块fromcassandra.clusterimportCluster#引入DCAwareRoundRobinPolicy模块,可用来自定义驱动程序的行为fromcassandra.policiesimportDCAwareRoundRobinPolicy#默认本机数据库集群(IP).cluster=Cluster()#连接并创建一个会话session=cluster.connect()3910.5基于Python访问CassandraPython3.8/2.7shell中执行效果示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第三单元《课外古诗词诵读》教学设计-2024-2025学年统编版语文七年级上册
- 小学一年级上册生活、生命与安全教案
- 机械设备搬迁外包协议
- 实施乡村振兴战略是建设现代化经济体系的重要基础
- 道 法集体生活成就我课件-2024-2025学年统编版道德与法治七年级上册
- 2024年咨询工程师(经济政策)考试题库(必刷)
- OA实施方案文档
- 2023-2024学年全国小学四年级上科学仁爱版模拟考试试卷(含答案解析)
- 2024年锅炉买卖合同范本
- 2024年松散型联营合同
- 投标报价得分计算表Excele
- JT-T 795-2023 事故汽车修复技术规范
- DL∕T 547-2020 电力系统光纤通信运行管理规程
- 2022年火力发电建设工程启动试运及验收规程
- 《什么是周长》学习单
- 5G定制网核心网练习试题附答案
- 江苏省2014定额解读-2016-10-3(建筑物超高增加费用)
- 背景调查表(标准样本)
- 压铸铝散热器施工方案范本
- 小学生古诗文大会备考基础试题题库及答案
- 国家开放大学《数据结构》课程实验报告(实验2-线性表)参考答案
评论
0/150
提交评论