




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
目錄概述1基于Python訪問Neo4j2基于Python訪問MongoDB3基于Python訪問Redis4小結(jié)61基于Python訪問Cassandra510.1概述NoSQL數(shù)據(jù)庫管理系統(tǒng)在大數(shù)據(jù)庫生態(tài)應(yīng)用系統(tǒng)架構(gòu)存儲(chǔ)層中起著重要的作用本章內(nèi)容思維導(dǎo)圖2不同類型的應(yīng)用系統(tǒng)可采用的開發(fā)語言JavaPythonC++、C#ScalaGoRubyPerl等各種數(shù)據(jù)庫一般都支持多種程序語言的編程接口,為應(yīng)用系統(tǒng)數(shù)據(jù)存儲(chǔ)處理編程方面提供了豐富的API和接入技術(shù)。310.1概述JAVA訪問數(shù)據(jù)庫的技術(shù)JDBC引入相關(guān)依賴JAR包到工程中;創(chuàng)建鏈接;開啟會(huì)話;數(shù)據(jù)操作;關(guān)閉會(huì)話;如果數(shù)據(jù)庫支持事務(wù),也可進(jìn)行事務(wù)的提交、回滾等操作;其他持久化中間件產(chǎn)品,常用的有:Hibernate-OGM(ObjectGridMapping)MyBatisSpringData410.1概述Java訪問4類NoSQL數(shù)據(jù)庫依賴的Jar包1)Neo4j圖數(shù)據(jù)庫/artifact/org.neo4j.driver/neo4j-java-driver510.1概述Java訪問4類NoSQL數(shù)據(jù)庫依賴的Jar包(續(xù))2)MongoDB文檔數(shù)據(jù)庫
官方提供的驅(qū)動(dòng)文件為mongo-java-driver.jar,當(dāng)前版本為4.1.0,
下載鏈接:http://mongodb.github.io/mongo-java-driver/。3)Redis鍵值數(shù)據(jù)庫jedis是Redis的java版本客戶端實(shí)現(xiàn),開發(fā)需要的Jar包為jedis.jar,目前版本為3.3。
下載鏈接:https:///artifact/redis.clients/jedis。610.1概述Java訪問4類NoSQL數(shù)據(jù)庫依賴的Jar包(續(xù))4)Cassandra列族數(shù)據(jù)庫Datastax公司提供了Java訪問Cassandra的驅(qū)動(dòng)庫包。官方鏈接:https:///en/developer/java-driver/4.3/JPA規(guī)范簡介JPA(JavaPersistenceAPI)意即Java持久化APIJPA出現(xiàn)主要是為了簡化持久層開發(fā)以及整合ORM技術(shù)JPA包括以下3方面的技術(shù)ORM映射元數(shù)據(jù),元數(shù)據(jù)描述對象和表之間的映射關(guān)系A(chǔ)PI:操作實(shí)體對象來執(zhí)行CRUD操作查詢語言:通過面向?qū)ο蠖敲嫦驍?shù)據(jù)庫的查詢語言查詢數(shù)據(jù),避免程序與SQL語句緊密耦合710.1概述基于SpringBoot2.0的JavaWeb應(yīng)用開發(fā)技術(shù)棧810.1概述SpringData官網(wǎng):https://spring.io/projects/spring-data針對不同數(shù)據(jù)庫提供了不同的開發(fā)模塊SpringDataNeo4jSpringDataMongoDBSpringDataRedisSpringDataforApacheCassandraSpringDataAzureCosmosDBSpringDataCouchbaseSpringDataElasticsearchSpringDataJPA……910.1概述目錄概述1基于Python訪問Neo4j2基于Python訪問MongoDB3基于Python訪問Redis4小結(jié)610基于Python訪問Cassandra5P4.2基于Python訪問Neo4j基于Python訪問Neo4j數(shù)據(jù)庫主要通過py2neo庫,下載地址為/v4/。V4版本語法與低版本有差異可以使用如下pip命令安裝最新穩(wěn)定版本。pipinstallpy2neoPython3下安裝使用如下命令python3–mpipinstallpy2neo
過程有些長11P4.2基于Python訪問Neo4j引入包>>>frompy2neoimportGraph,Node,Relationship#連接neo4j數(shù)據(jù)庫>>>graph=Graph("bolt://localhost:7687",username="neo4j",password="buptyyn")#新增節(jié)點(diǎn)>>>node1=Node(lable="Person",name="張三")>>>graph.create(node1)>>>node2=Node(lable="Person",name="李四")>>>graph.create(node2)12P4.2基于Python訪問Neo4j新增關(guān)系>>>node_1_call_node_2=Relationship(node1,'CALL',node2)#關(guān)系屬性count值為1>>>node_1_call_node_2['count']=1>>>node_2_call_node_1=Relationship(node2,'CALL',node1)#創(chuàng)建關(guān)系>>>graph.create(node_2_call_node_1)>>>graph.create(node_1_call_node_2)13P4.2基于Python訪問Neo4j同時(shí)新增節(jié)點(diǎn)及關(guān)系>>>nicole=Node('Person',name='Nicole')>>>adam=Node('Person',name='Adam')>>>graph.create(Relationship(nicole,'KNOWS',adam))14P4.2基于Python訪問Neo4j修改節(jié)點(diǎn)、關(guān)系的屬性值#更新關(guān)系屬性,push提交>>>node_1_call_node_2['count']+=1>>>graph.push(node_1_call_node_2)#更新節(jié)點(diǎn)屬性,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刪除節(jié)點(diǎn)>>>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小結(jié)618基于Python訪問Cassandra510.3基于Python訪問MongoDBMongoDB支持很多種訪問方式,參見https://docs.MongoDB.com/ecosystem/drivers。基于Python訪問MongoDB數(shù)據(jù)庫主要通過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鏈接數(shù)據(jù)庫、查詢某個(gè)集合所有行數(shù)據(jù)示例如下
>>>importpymongo>>>frompymongoimportMongoClient>>>client=MongoClient()>>>database=client.myTest>>>collection=database.ct>>>rows=collection.find()>>>forrowinrows:print(row)鏈接數(shù)據(jù)的另外方法:#mongodb服務(wù)的地址和端口號mongo_url=":27017“#連接到mongodb,如果參數(shù)不填,默認(rèn)為“l(fā)ocalhost:27017”client=pymongo.MongoClient(mongo_url)如果需要驗(yàn)證身份client=pymongo.MongoClient('mongodb://root:123456@localhost:27017/')#連接到數(shù)據(jù)庫myDatabaseDATABASE="myDatabase"db=client[DATABASE]#連接到集合(表):myDatabase.myCollectionCOLLECTION="myCollection"db_coll=db[COLLECTION]10.3基于Python訪問MongoDB2310.3基于Python訪問MongoDBPython訪問MongoDB,新增文檔,語法非常類似例如插入一個(gè)bLog數(shù)據(jù)到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查看當(dāng)前數(shù)據(jù)庫中所有集合的名稱。>>>db.list_collection_names()['posts']使用find_one查看某一文檔,也支持查詢條件設(shè)置。>>>pprint.pprint(posts.find_one())2510.3基于Python訪問MongoDBPython訪問MongoDB,修改文檔
可以增加upsert=True,表示如果沒有該條數(shù)據(jù)則插入一條數(shù)據(jù),但這種情況需要插入語句也得包含其它字段,不能只有要更新的字段信息;>>>collection.update_one({"Name":"wang"},{'$set':{"gender":1,"age":19}},upsert=True)<pymongo.results.UpdateResultobjectat0x0000022EF2856780>2610.3基于Python訪問MongoDB根據(jù)_id查詢某個(gè)文檔操作對比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小結(jié)627基于Python訪問Cassandra510.4基于Python訪問Redis基于Python訪問Redis數(shù)據(jù)庫主要通過redis-py實(shí)現(xiàn),下載鏈接及相關(guān)文檔參見/andymccurdy/redis-py,安裝命令:pipinstallredis如果同時(shí)安裝了python2.7和3.x版本,建議將其中一個(gè)python.exe名稱修改下,區(qū)分開兩個(gè)版本,如將3.x的python.exe命名為python3.exe2810.4基于Python訪問Redis如果同時(shí)安裝了兩個(gè)版本的Python,如果直接執(zhí)行pip命令,將會(huì)把第三方庫安裝到先安裝的python版本環(huán)境中;在使用pip安裝庫時(shí),可限定某個(gè)版本Python的pip安裝。命令格式:python3–mpipinstallredis課件中示例基于python3.8基于Python訪問Redis關(guān)鍵步驟引入相關(guān)庫建立數(shù)據(jù)庫鏈接訪問數(shù)據(jù)庫關(guān)閉數(shù)據(jù)庫鏈接2910.4基于Python訪問Redis30基于Python訪問Redis數(shù)據(jù)庫示例如下。
>>>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,循環(huán)查詢當(dāng)前鍵列表示例>>>importredis>>>r=redis.Redis()>>>print(client.keys())>>>forkeyinclient.keys():print(key.decode())3110.4基于Python訪問Redisclient.keys()返回的是一個(gè)列表,列表里是bytes型key,使用for循環(huán)把列表元素轉(zhuǎn)換為python中的字符串型數(shù)據(jù),循環(huán)輸出。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表示鍵不存在時(shí)執(zhí)行;client.incr實(shí)現(xiàn)給第1個(gè)參數(shù)鍵增加一個(gè)增量,如果省略第二個(gè)參數(shù)則表示加1;client.decr實(shí)現(xiàn)給第1個(gè)參數(shù)鍵減少一個(gè)量,如果省略第二個(gè)參數(shù)則表示減1;client.expire用于設(shè)置鍵的ttl;目錄概述1基于Python訪問Neo4j2基于Python訪問MongoDB3基于Python訪問Redis4小結(jié)633基于Python訪問Cassandra510.5基于Python訪問Cassandra需要安裝驅(qū)動(dòng)cassandra-driver,下載鏈接及相關(guān)文檔參見
https:///project/cassandra-driver/該驅(qū)動(dòng)組件由DATASTAX公司開發(fā),并托管到Github上,開源免費(fèi),可以采用pip方式進(jìn)行安裝。pipinstallcassandra-driver
或者python3–mpipinstallcassandra-driver關(guān)鍵步驟引入相關(guān)庫建立數(shù)據(jù)庫鏈接訪問數(shù)據(jù)庫關(guān)閉數(shù)據(jù)庫鏈接3410.5基于Python訪問Cassandra1)引入相關(guān)庫,建立連接,創(chuàng)建會(huì)話。
fromcassandra.clusterimportCluster cluster=Cluster(['80']) cluster.port=9042 session=cluster.connect() session=cluster.connect('test_cassandra’)
操作完畢后,可以通過以下方式關(guān)閉數(shù)據(jù)庫連接。
cluster.shutdown()
由于Cassandra在分布式部署時(shí)采用對等的環(huán)形結(jié)構(gòu),因此IP參數(shù)支持逗號隔開的地址列表。3510.5基于Python訪問Cassandra2)連接到某個(gè)鍵空間,有兩種方法:
session=cluster.connect('test_cassandra') 或者
session.execute("usetest_cassandra")3)執(zhí)行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當(dāng)通過session.execute執(zhí)行查詢語句時(shí),可以采用三種方式遍歷返回的結(jié)果,示例如下。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鏈接該鍵空間并進(jìn)行數(shù)據(jù)訪問先建立以下鍵空間、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模塊,可用來自定義驅(qū)動(dòng)程序的行為fromcassandra.policiesimportDCAwareRoundRobinPolicy#默認(rèn)本機(jī)數(shù)據(jù)庫集群(IP).cluster=Cluster()#連接并創(chuàng)建一個(gè)會(huì)話session=cluster.connect()3910.5基于Python訪問CassandraPython3.8/2.7shell中執(zhí)行效果示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 牙醫(yī)藥品知識(shí)培訓(xùn)課件
- 教育投資績效評估表格(年份對比)
- 心理咨詢技能實(shí)務(wù)試題
- 印刷材料采購與使用協(xié)議
- 山東省菏澤市2024-2025學(xué)年高二上學(xué)期1月期末生物學(xué)試題(含答案)
- 健康醫(yī)療智能硬件開發(fā)合作契約書
- 秘密花園的閱讀引導(dǎo):英文名著導(dǎo)讀教案
- 智慧城市智慧交通系統(tǒng)智能調(diào)度預(yù)案
- 產(chǎn)品定制開發(fā)合同書及產(chǎn)品質(zhì)量保障承諾書
- 大數(shù)據(jù)分析平臺(tái)開發(fā)合作協(xié)議
- 綜合門診部全科醫(yī)療科設(shè)置基本標(biāo)準(zhǔn)
- GB 15603-1995常用化學(xué)危險(xiǎn)品貯存通則
- 人教版PEP初中英語中考總復(fù)習(xí):復(fù)習(xí)重點(diǎn)課件
- 數(shù)字化消防管理解決方案
- 二類汽修廠汽車維修管理新規(guī)制度匯編
- 交接班流程綱要綱要圖
- 浙江省衢州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 初中英語《Unit5-Do-you-remember-what-you-were-doing》教學(xué)課件設(shè)計(jì)
- 品德家庭小賬本
- 癥狀性大腦中動(dòng)脈慢性閉塞血管內(nèi)開通治療課件
- 大象版科學(xué)四年級下冊第一單元測試卷(含答案)
評論
0/150
提交評論