溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

發(fā)布時(shí)間:2020-09-26 11:32:09 來(lái)源:腳本之家 閱讀:158 作者:沙振宇 欄目:開(kāi)發(fā)技術(shù)

非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j簡(jiǎn)介

Neo4j是現(xiàn)今最火爆的圖數(shù)據(jù)。在2010年發(fā)布,產(chǎn)品的發(fā)展勢(shì)頭還算不錯(cuò)。

作為圖數(shù)據(jù)庫(kù),Neo4j最大的特點(diǎn)是關(guān)系數(shù)據(jù)的存儲(chǔ)。

圖數(shù)據(jù)庫(kù)除了能夠像普通的數(shù)據(jù)庫(kù)一樣存儲(chǔ)一行一行的數(shù)據(jù)之外,還可以很方便的看出存儲(chǔ)數(shù)據(jù)之間的關(guān)系信息。

適合存儲(chǔ)”修改較少,查詢(xún)較多,沒(méi)有超大節(jié)點(diǎn)“的圖數(shù)據(jù)。

圖數(shù)據(jù)庫(kù)Neo4j應(yīng)用場(chǎng)景

社交網(wǎng)絡(luò)

根據(jù)用戶(hù)與其他用戶(hù)的關(guān)系為用戶(hù)推薦新的朋友。例如,在QQ中給你推薦朋友的朋友 。

智能推薦引擎

通過(guò)分析用戶(hù)有哪些朋友、用戶(hù)朋友喜好的產(chǎn)品、用戶(hù)的瀏覽記錄等關(guān)系信息推測(cè)用戶(hù)的喜好進(jìn)而為用戶(hù)推薦商品。

知識(shí)圖譜

根據(jù)知識(shí)點(diǎn)間的關(guān)系建立圖譜,幫助用戶(hù)搜索到關(guān)聯(lián)的知識(shí)。例如在百度上搜索Neo4j,會(huì)同時(shí)出現(xiàn)MySQL等類(lèi)似的內(nèi)容。

惡意軟件檢測(cè)

通過(guò)記錄軟件行為的各種關(guān)系數(shù)據(jù),例如其訪(fǎng)問(wèn)了哪些IP、訪(fǎng)問(wèn)了哪些系統(tǒng)資源,進(jìn)而分析軟件行為是否具有惡意。

網(wǎng)絡(luò)、數(shù)據(jù)中心管理

網(wǎng)絡(luò)、數(shù)據(jù)中心這些基礎(chǔ)設(shè)施自身就是一個(gè)包含復(fù)雜關(guān)系的網(wǎng)絡(luò),利用Neo4j可以方便的建立設(shè)備之間的關(guān)系,以便于對(duì)整個(gè)系統(tǒng)的管理。

Neo4j優(yōu)點(diǎn)

  • 數(shù)據(jù)的插入,查詢(xún)操作很直觀,不用再像之前要考慮各個(gè)表之間的關(guān)系。
  • 提供的圖搜索和圖遍歷方法很方便,速度也是比較快的。

Neo4j缺點(diǎn)

  • 最不能讓人忍受的就是極慢的插入速度??赡苁且?yàn)閯?chuàng)建節(jié)點(diǎn)和邊的時(shí)候需要保存一些額外信息(為了查詢(xún)服務(wù))。不知道是不是我代碼的問(wèn)題,插入10000個(gè)節(jié)點(diǎn),10000條邊花了將近10分鐘…
  • 超大節(jié)點(diǎn)。當(dāng)有一個(gè)節(jié)點(diǎn)的邊非常多時(shí)(常見(jiàn)于大V),有關(guān)這個(gè)節(jié)點(diǎn)的操作的速度將大大下降。這個(gè)問(wèn)題很早就有了,官方也說(shuō)過(guò)會(huì)處理,然而現(xiàn)在仍然不能讓人滿(mǎn)意。
  • 提高數(shù)據(jù)庫(kù)速度的常用方法就是多分配內(nèi)存,然而看了官方操作手冊(cè),貌似無(wú)法直接設(shè)置數(shù)據(jù)庫(kù)內(nèi)存占用量,而是需要計(jì)算后為其”預(yù)留“內(nèi)存…

CentOS安裝啟動(dòng)Neo4j

下載Neo4j

下載地址:https://neo4j.com/download-center/#community

包地址:https://neo4j.com/artifact.php?name=neo4j-community-3.5.6-unix.tar.gz

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

下載 3.5.6 版本

curl -O https://neo4j.com/artifact.php?name=neo4j-community-3.5.6-unix.tar.gz

安裝Neo4j

tar -zxvf neo4j-community-3.5.6-unix.tar.gz

移動(dòng)文件夾

mv neo4j-community-3.5.6/ /usr/local/neo4j

效果

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

修改Neo4j配置文件

配置文件路徑

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

1、修改第22行l(wèi)oad csv時(shí)路徑,在前面加個(gè)#注釋掉,可從任意路徑讀取文件

#dbms.directories.import=import

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

2、修改35行和36行,去除注釋?zhuān)O(shè)置JVM初始堆內(nèi)存和JVM最大堆內(nèi)存

(理論上JVM最大 堆內(nèi)存越大越好,但是要小于機(jī)器的物理內(nèi)存)

dbms.memory.heap.initial_size=512m

dbms.memory.heap.max_size=1g

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

如果不知道還剩多少,可以用linux命令free -m

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

3、修改46行,可以認(rèn)為這個(gè)是緩存,如果機(jī)器配置高,這個(gè)越大越好

dbms.memory.pagecache.size=5g

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

4、修改54行,去掉改行的#,可以遠(yuǎn)程通過(guò)ip訪(fǎng)問(wèn)neo4j數(shù)據(jù)庫(kù)

dbms.connectors.default_listen_address=0.0.0.

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

5、默認(rèn) bolt端口是7687,http端口是7474,https關(guān)口是7473,不修改下面3項(xiàng)也可以

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

dbms.connector.bolt.listen_address=:

dbms.connector.http.listen_address=:

dbms.connector.https.listen_address=:

去掉注釋

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

6、修改245行,去掉#,允許從遠(yuǎn)程url來(lái)load csv

dbms.security.allow_csv_import_from_file_urls=true

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

7、修改265行,去除注釋設(shè)置neo4j可讀可寫(xiě)

dbms.read_only=false

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

8、3.5.6 版本配置文件(注:各個(gè)版本中配置文件是不同的)

#*****************************************************************
# Neo4j configuration
#
# For more details and a complete list of settings, please see
# https://neo4j.com/docs/operations-manual/current/reference/configuration-settings/
#*****************************************************************

# The name of the database to mount
#dbms.active_database=graph.db

# Paths of directories in the installation.
#dbms.directories.data=data
#dbms.directories.plugins=plugins
#dbms.directories.certificates=certificates
#dbms.directories.logs=logs
#dbms.directories.lib=lib
#dbms.directories.run=run

# This setting constrains all `LOAD CSV` import files to be under the `import` directory. Remove or comment it out to
# allow files to be loaded from anywhere in the filesystem; this introduces possible security problems. See the
# `LOAD CSV` section of the manual for details.
# dbms.directories.import=import

# Whether requests to Neo4j are authenticated.
# To disable authentication, uncomment this line
#dbms.security.auth_enabled=false

# Enable this to be able to upgrade a store from an older version.
#dbms.allow_upgrade=true

# Java Heap Size: by default the Java heap size is dynamically
# calculated based on available system resources.
# Uncomment these lines to set specific initial and maximum
# heap size.
dbms.memory.heap.initial_size=512m
dbms.memory.heap.max_size=1g

# The amount of memory to use for mapping the store files, in bytes (or
# kilobytes with the 'k' suffix, megabytes with 'm' and gigabytes with 'g').
# If Neo4j is running on a dedicated server, then it is generally recommended
# to leave about 2-4 gigabytes for the operating system, give the JVM enough
# heap to hold all your transaction state and query context, and then leave the
# rest for the page cache.
# The default page cache memory assumes the machine is dedicated to running
# Neo4j, and is heuristically set to 50% of RAM minus the max Java heap size.
dbms.memory.pagecache.size=5g

#*****************************************************************
# Network connector configuration
#*****************************************************************

# With default configuration Neo4j only accepts local connections.
# To accept non-local connections, uncomment this line:
dbms.connectors.default_listen_address=0.0.0.0

# You can also choose a specific network interface, and configure a non-default
# port for each connector, by setting their individual listen_address.

# The address at which this server can be reached by its clients. This may be the server's IP address or DNS name, or
# it may be the address of a reverse proxy which sits in front of the server. This setting may be overridden for
# individual connectors below.
#dbms.connectors.default_advertised_address=localhost

# You can also choose a specific advertised hostname or IP address, and
# configure an advertised port for each connector, by setting their
# individual advertised_address.

# Bolt connector
dbms.connector.bolt.enabled=true
#dbms.connector.bolt.tls_level=OPTIONAL
dbms.connector.bolt.listen_address=:7687

# HTTP Connector. There can be zero or one HTTP connectors.
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=:7474

# HTTPS Connector. There can be zero or one HTTPS connectors.
dbms.connector.https.enabled=true
dbms.connector.https.listen_address=:7473

# Number of Neo4j worker threads.
#dbms.threads.worker_count=

#*****************************************************************
# SSL system configuration
#*****************************************************************

# Names of the SSL policies to be used for the respective components.

# The legacy policy is a special policy which is not defined in
# the policy configuration section, but rather derives from
# dbms.directories.certificates and associated files
# (by default: neo4j.key and neo4j.cert). Its use will be deprecated.

# The policies to be used for connectors.
#
# N.B: Note that a connector must be configured to support/require
#   SSL/TLS for the policy to actually be utilized.
#
# see: dbms.connector.*.tls_level

#bolt.ssl_policy=legacy
#https.ssl_policy=legacy

#*****************************************************************
# SSL policy configuration
#*****************************************************************

# Each policy is configured under a separate namespace, e.g.
#  dbms.ssl.policy.<policyname>.*
#
# The example settings below are for a new policy named 'default'.

# The base directory for cryptographic objects. Each policy will by
# default look for its associated objects (keys, certificates, ...)
# under the base directory.
#
# Every such setting can be overridden using a full path to
# the respective object, but every policy will by default look
# for cryptographic objects in its base location.
#
# Mandatory setting

#dbms.ssl.policy.default.base_directory=certificates/default

# Allows the generation of a fresh private key and a self-signed
# certificate if none are found in the expected locations. It is
# recommended to turn this off again after keys have been generated.
#
# Keys should in general be generated and distributed offline
# by a trusted certificate authority (CA) and not by utilizing
# this mode.

#dbms.ssl.policy.default.allow_key_generation=false

# Enabling this makes it so that this policy ignores the contents
# of the trusted_dir and simply resorts to trusting everything.
#
# Use of this mode is discouraged. It would offer encryption but no security.

#dbms.ssl.policy.default.trust_all=false

# The private key for the default SSL policy. By default a file
# named private.key is expected under the base directory of the policy.
# It is mandatory that a key can be found or generated.

#dbms.ssl.policy.default.private_key=

# The private key for the default SSL policy. By default a file
# named public.crt is expected under the base directory of the policy.
# It is mandatory that a certificate can be found or generated.

#dbms.ssl.policy.default.public_certificate=

# The certificates of trusted parties. By default a directory named
# 'trusted' is expected under the base directory of the policy. It is
# mandatory to create the directory so that it exists, because it cannot
# be auto-created (for security purposes).
#
# To enforce client authentication client_auth must be set to 'require'!

#dbms.ssl.policy.default.trusted_dir=

# Client authentication setting. Values: none, optional, require
# The default is to require client authentication.
#
# Servers are always authenticated unless explicitly overridden
# using the trust_all setting. In a mutual authentication setup this
# should be kept at the default of require and trusted certificates
# must be installed in the trusted_dir.

#dbms.ssl.policy.default.client_auth=require

# It is possible to verify the hostname that the client uses
# to connect to the remote server. In order for this to work, the server public
# certificate must have a valid CN and/or matching Subject Alternative Names.

# Note that this is irrelevant on host side connections (sockets receiving
# connections).

# To enable hostname verification client side on nodes, set this to true.

#dbms.ssl.policy.default.verify_hostname=false

# A comma-separated list of allowed TLS versions.
# By default only TLSv1.2 is allowed.

#dbms.ssl.policy.default.tls_versions=

# A comma-separated list of allowed ciphers.
# The default ciphers are the defaults of the JVM platform.

#dbms.ssl.policy.default.ciphers=

#*****************************************************************
# Logging configuration
#*****************************************************************

# To enable HTTP logging, uncomment this line
#dbms.logs.http.enabled=true

# Number of HTTP logs to keep.
#dbms.logs.http.rotation.keep_number=5

# Size of each HTTP log that is kept.
#dbms.logs.http.rotation.size=20m

# To enable GC Logging, uncomment this line
#dbms.logs.gc.enabled=true

# GC Logging Options
# see http://docs.oracle.com/cd/E19957-01/819-0084-10/pt_tuningjava.html#wp57013 for more information.
#dbms.logs.gc.options=-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintPromotionFailure -XX:+PrintTenuringDistribution

# For Java 9 and newer GC Logging Options
# see https://docs.oracle.com/javase/10/tools/java.htm#JSWOR-GUID-BE93ABDC-999C-4CB5-A88B-1994AAAC74D5
#dbms.logs.gc.options=-Xlog:gc*,safepoint,age*=trace

# Number of GC logs to keep.
#dbms.logs.gc.rotation.keep_number=5

# Size of each GC log that is kept.
#dbms.logs.gc.rotation.size=20m

# Log level for the debug log. One of DEBUG, INFO, WARN and ERROR. Be aware that logging at DEBUG level can be very verbose.
#dbms.logs.debug.level=INFO

# Size threshold for rotation of the debug log. If set to zero then no rotation will occur. Accepts a binary suffix "k",
# "m" or "g".
#dbms.logs.debug.rotation.size=20m

# Maximum number of history files for the internal log.
#dbms.logs.debug.rotation.keep_number=7

#*****************************************************************
# Miscellaneous configuration
#*****************************************************************

# Enable this to specify a parser other than the default one.
#cypher.default_language_version=3.0

# Determines if Cypher will allow using file URLs when loading data using
# `LOAD CSV`. Setting this value to `false` will cause Neo4j to fail `LOAD CSV`
# clauses that load data from the file system.
dbms.security.allow_csv_import_from_file_urls=true


# Value of the Access-Control-Allow-Origin header sent over any HTTP or HTTPS
# connector. This defaults to '*', which allows broadest compatibility. Note
# that any URI provided here limits HTTP/HTTPS access to that URI only.
#dbms.security.http_access_control_allow_origin=*

# Value of the HTTP Strict-Transport-Security (HSTS) response header. This header
# tells browsers that a webpage should only be accessed using HTTPS instead of HTTP.
# It is attached to every HTTPS response. Setting is not set by default so
# 'Strict-Transport-Security' header is not sent. Value is expected to contain
# directives like 'max-age', 'includeSubDomains' and 'preload'.
#dbms.security.http_strict_transport_security=

# Retention policy for transaction logs needed to perform recovery and backups.
dbms.tx_log.rotation.retention_policy=1 days

# Only allow read operations from this Neo4j instance. This mode still requires
# write access to the directory for lock purposes.
dbms.read_only=false

# Comma separated list of JAX-RS packages containing JAX-RS resources, one
# package name for each mountpoint. The listed package names will be loaded
# under the mountpoints specified. Uncomment this line to mount the
# org.neo4j.examples.server.unmanaged.HelloWorldResource.java from
# neo4j-server-examples under /examples/unmanaged, resulting in a final URL of
# http://localhost:7474/examples/unmanaged/helloworld/{nodeId}
#dbms.unmanaged_extension_classes=org.neo4j.examples.server.unmanaged=/examples/unmanaged

# A comma separated list of procedures and user defined functions that are allowed
# full access to the database through unsupported/insecure internal APIs.
#dbms.security.procedures.unrestricted=my.extensions.example,my.procedures.*

# A comma separated list of procedures to be loaded by default.
# Leaving this unconfigured will load all procedures found.
#dbms.security.procedures.whitelist=apoc.coll.*,apoc.load.*

#********************************************************************
# JVM Parameters
#********************************************************************

# G1GC generally strikes a good balance between throughput and tail
# latency, without too much tuning.
dbms.jvm.additional=-XX:+UseG1GC

# Have common exceptions keep producing stack traces, so they can be
# debugged regardless of how often logs are rotated.
dbms.jvm.additional=-XX:-OmitStackTraceInFastThrow

# Make sure that `initmemory` is not only allocated, but committed to
# the process, before starting the database. This reduces memory
# fragmentation, increasing the effectiveness of transparent huge
# pages. It also reduces the possibility of seeing performance drop
# due to heap-growing GC events, where a decrease in available page
# cache leads to an increase in mean IO response time.
# Try reducing the heap memory, if this flag degrades performance.
dbms.jvm.additional=-XX:+AlwaysPreTouch

# Trust that non-static final fields are really final.
# This allows more optimizations and improves overall performance.
# NOTE: Disable this if you use embedded mode, or have extensions or dependencies that may use reflection or
# serialization to change the value of final fields!
dbms.jvm.additional=-XX:+UnlockExperimentalVMOptions
dbms.jvm.additional=-XX:+TrustFinalNonStaticFields

# Disable explicit garbage collection, which is occasionally invoked by the JDK itself.
dbms.jvm.additional=-XX:+DisableExplicitGC

# Remote JMX monitoring, uncomment and adjust the following lines as needed. Absolute paths to jmx.access and
# jmx.password files are required.
# Also make sure to update the jmx.access and jmx.password files with appropriate permission roles and passwords,
# the shipped configuration contains only a read only role called 'monitor' with password 'Neo4j'.
# For more details, see: http://download.oracle.com/javase/8/docs/technotes/guides/management/agent.html
# On Unix based systems the jmx.password file needs to be owned by the user that will run the server,
# and have permissions set to 0600.
# For details on setting these file permissions on Windows see:
#   http://docs.oracle.com/javase/8/docs/technotes/guides/management/security-windows.html
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.port=3637
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.authenticate=true
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.ssl=false
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.password.file=/absolute/path/to/conf/jmx.password
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.access.file=/absolute/path/to/conf/jmx.access

# Some systems cannot discover host name automatically, and need this line configured:
#dbms.jvm.additional=-Djava.rmi.server.hostname=$THE_NEO4J_SERVER_HOSTNAME

# Expand Diffie Hellman (DH) key size from default 1024 to 2048 for DH-RSA cipher suites used in server TLS handshakes.
# This is to protect the server from any potential passive eavesdropping.
dbms.jvm.additional=-Djdk.tls.ephemeralDHKeySize=2048

# This mitigates a DDoS vector.
dbms.jvm.additional=-Djdk.tls.rejectClientInitiatedRenegotiation=true

#********************************************************************
# Wrapper Windows NT/2000/XP Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
# using this configuration file has been installed as a service.
# Please uninstall the service before modifying this section. The
# service can then be reinstalled.

# Name of the service
dbms.windows_service_name=neo4j

#********************************************************************
# Other Neo4j system properties
#********************************************************************
dbms.jvm.additional=-Dunsupported.dbms.udc.source=tarball

查看Neo4j是否啟動(dòng)

啟動(dòng):進(jìn)入bin目錄執(zhí)行./neo4j start

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

停止:進(jìn)入bin目錄執(zhí)行./neo4j stop

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

查看狀態(tài):進(jìn)入bin目錄執(zhí)行./neo4j status

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

web訪(fǎng)問(wèn)Neo4j

http://服務(wù)器ip:7474/browser/

在瀏覽器訪(fǎng)問(wèn)圖數(shù)據(jù)庫(kù)所在的機(jī)器上的7474端口(第一次訪(fǎng)問(wèn)賬號(hào)neo4j,密碼neo4j,會(huì)提示修改初始密碼)

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

設(shè)置完密碼后,點(diǎn)擊左上角數(shù)據(jù)庫(kù),就能看到圖數(shù)據(jù)庫(kù)里面的信息了

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

Python3操作Neo4j

安裝py2neo模塊

pip install py2neo

如果安不上,請(qǐng)用:

pip install git+https://github.com/nigelsmall/py2neo.git

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

官網(wǎng)地址:https://py2neo.org/v3/index.html

更多內(nèi)容請(qǐng)參考官網(wǎng)給的命令:

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

效果圖

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例

簡(jiǎn)單講解

如上圖,是本示例的效果。

其中,我加了5個(gè)節(jié)點(diǎn)信息,3種關(guān)系(7個(gè)分支的關(guān)系),還有3種屬性。

這里是給了節(jié)點(diǎn)加了屬性,例如我給自己加了“博客地址”的屬性,屬性值為“https://www.jb51.net/”。

還可以給關(guān)系加屬性,這里沒(méi)做展示,方法是類(lèi)似的。

完整源碼

from py2neo import Graph, Node, Relationship

graph = Graph(host='IP地址', http_port=7474, user='neo4j', password='123456')

# 清空庫(kù)
graph.delete_all()

# 創(chuàng)建結(jié)點(diǎn)
test_node_0 = Node('西游記', name='唐僧') # 修改的部分
test_node_1 = Node('西游記', name='孫悟空') # 修改的部分
test_node_2 = Node('西游記', name='豬八戒') # 修改的部分
test_node_3 = Node('西游記', name='沙師弟') # 修改的部分
test_node_4 = Node('西游記', name='白龍馬') # 修改的部分

test_node_3.setdefault("博客地址",'https://shazhenyu.blog.csdn.net/')

graph.create(test_node_0)
graph.create(test_node_1)
graph.create(test_node_2)
graph.create(test_node_3)
graph.create(test_node_4)

# 創(chuàng)建關(guān)系
# 分別建立了test_node_1指向test_node_2和test_node_2指向test_node_1兩條關(guān)系,關(guān)系的類(lèi)型為"丈夫、妻子",兩條關(guān)系都有屬性count,且值為1。
node_0_node_1 = Relationship(test_node_0, '師傅', test_node_1)
node_0_node_2 = Relationship(test_node_0, '師傅', test_node_2)
node_0_node_3 = Relationship(test_node_0, '師傅', test_node_3)
node_1_node_0 = Relationship(test_node_1, '徒弟', test_node_0)
node_2_node_0 = Relationship(test_node_2, '徒弟', test_node_0)
node_3_node_0 = Relationship(test_node_3, '徒弟', test_node_0)
node_4_node_0 = Relationship(test_node_4, '坐騎', test_node_0)
node_0_node_1['count'] = 1
node_4_node_0['count'] = 1

graph.create(node_0_node_1)
graph.create(node_0_node_2)
graph.create(node_0_node_3)
graph.create(node_1_node_0)
graph.create(node_2_node_0)
graph.create(node_3_node_0)
graph.create(node_4_node_0)

print(graph)
print(test_node_0)
print(test_node_1)
print(test_node_2)
print(test_node_3)
print(test_node_4)
print(node_0_node_1)
print(node_0_node_2)
print(node_0_node_3)
print(node_1_node_0)
print(node_2_node_0)
print(node_3_node_0)
print(node_4_node_0)

本文詳細(xì)講解了非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例,更多關(guān)于Python3操作Neo4j的知識(shí)請(qǐng)查看下面的相關(guān)鏈接

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI