北京市保障房建设投资中心网站首页,怎么做个网站,搜索关键词可以过得网站,梧州本地网站特别鸣谢
我的领导#xff0c;我的脑子#xff0c;我的学习能力#xff0c;感动了
1. 搭建知识图谱数据库#xff08;见上一章博客#xff09;
这里不加赘述了#xff0c;请参考上一篇博客搭建
2. FastApi包装接口
这里注意#xff1a;NEO4J_URI不得写http:,只能写…特别鸣谢
我的领导我的脑子我的学习能力感动了
1. 搭建知识图谱数据库见上一章博客
这里不加赘述了请参考上一篇博客搭建
2. FastApi包装接口
这里注意NEO4J_URI不得写http:,只能写neo4j或者bolt 还需要注意APP_HOST不得是127.0.0.1必须是0.0.0.0不然只有局域网才能访问
这是.env文件
# app
APP_HOST0.0.0.0
APP_PORT8000# neo4j
NEO4J_URIneo4j://xxxxxx:7687
NEO4J_USERneo4j
NEO4J_PASSWORD你自己的密码
NEO4J_VERSION5
NEO4J_DATABASE数据库的名字
NEO4J_PORT7474# http://127.0.0.1:8000/api/node/search?name布洛芬
# http://120.26.32.188:8000/api/node/search?name布洛芬这是router的查询相关内容
#!/usr/bin/python3import logging
from fastapi import APIRouter, status
from fastapi.responses import JSONResponse
from utils.neo4j_provider import asyncDriver
from settings import settingsrouter APIRouter()# 定义一个根路由
router.get(/add)
def add_node():# TODO 往 neo4j 里创建新的节点data {code: 0,message: ,data: add success}return JSONResponse(contentdata, status_codestatus.HTTP_200_OK)router.route(/search)
async def get_search(q: str None):if q is None:return []cql MATCH (p:商品名称) WHERE p.name CONTAINS $name RETURN precords, _, _ await asyncDriver.execute_query(cql,nameq.query_params[name],database_settings.NEO4J_DATABASE,routing_r,)# 转换节点为可序列化的字典serialized_records []for record in records:node record[p]serialized_records.append({id: node.element_id,labels: list(node.labels),properties: dict(node)})return JSONResponse(contentserialized_records, status_codestatus.HTTP_200_OK)
这是main.py函数
import logging
from settings import settingsfrom app_init import create_applicationimport colorama# 初始化 colorama 模块 在控制台、命令行输出彩色文字的模块,可以跨平台使用
colorama.init(autoresetTrue)app create_application()
# app FastAPI()if __name__ __main__:import uvicornlogging.root.setLevel(logging.DEBUG)logging.info(Starting on %s:%d , settings.APP_HOST, settings.APP_PORT)# main:app main下面的 app相当于注入# main: main.py 文件(也可理解为Python模块).# app: main.py 中 app FastAPI()# 语句创建的app对象.# --reload: 在代码改变后重启服务器只能在开发的时候使用uvicorn.run(main:app, hostsettings.APP_HOST, portsettings.APP_PORT)
neo4j_provider.py
#!/usr/bin/python3
import osfrom neo4j import GraphDatabase, AsyncGraphDatabase, basic_auth, Driver, AsyncDriver
from settings import settings# Neo4j 数据库操作类
class Neo4jProvider:创建 Neo4j 数据库连接def __init__(self) - None:# 获取环境变量值如果没有就返回默认值self.url settings.NEO4J_URIself.username settings.NEO4J_USERself.password settings.NEO4J_PASSWORDself.neo4j_version settings.NEO4J_VERSIONself.database settings.NEO4J_DATABASEself.port int(settings.NEO4J_PORT)# 同步驱动def driver(self) - Driver:print(self.url, self.url)return GraphDatabase.driver(self.url, authbasic_auth(self.username, self.password))# 异步驱动def async_driver(self) - AsyncDriver:return AsyncGraphDatabase.driver(self.url, authbasic_auth(self.username, self.password))
# 同步驱动。暴露给外面调用
driver Neo4jProvider().driver()
# 异步驱动。暴露给外面调用
asyncDriver Neo4jProvider().async_driver()3. 公网ip查询结果展示 4. 与大模型连接效果展示 总结不易欢迎各位金主爸爸打赏点赞收藏