数据库读取器¶
如果您在 Colab 上打开此笔记本,您可能需要安装 LlamaIndex 🦙。
In [ ]
已复制!
%pip install llama-index-readers-database
%pip install llama-index-readers-database
In [ ]
已复制!
!pip install llama-index
!pip install llama-index
In [ ]
已复制!
import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
import logging import sys logging.basicConfig(stream=sys.stdout, level=logging.INFO) logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
In [ ]
已复制!
from __future__ import absolute_import
# My OpenAI Key
import os
os.environ["OPENAI_API_KEY"] = ""
from llama_index.readers.database import DatabaseReader
from llama_index.core import VectorStoreIndex
from __future__ import absolute_import # 我的 OpenAI Key import os os.environ["OPENAI_API_KEY"] = "" from llama_index.readers.database import DatabaseReader from llama_index.core import VectorStoreIndex
In [ ]
已复制!
# Initialize DatabaseReader object with the following parameters:
db = DatabaseReader(
scheme="postgresql", # Database Scheme
host="localhost", # Database Host
port="5432", # Database Port
user="postgres", # Database User
password="FakeExamplePassword", # Database Password
dbname="postgres", # Database Name
)
# 使用以下参数初始化 DatabaseReader 对象:db = DatabaseReader( scheme="postgresql", # 数据库方案 host="localhost", # 数据库主机 port="5432", # 数据库端口 user="postgres", # 数据库用户 password="FakeExamplePassword", # 数据库密码 dbname="postgres", # 数据库名称 )
In [ ]
已复制!
### DatabaseReader class ###
# db is an instance of DatabaseReader:
print(type(db))
# DatabaseReader available method:
print(type(db.load_data))
### SQLDatabase class ###
# db.sql is an instance of SQLDatabase:
print(type(db.sql_database))
# SQLDatabase available methods:
print(type(db.sql_database.from_uri))
print(type(db.sql_database.get_single_table_info))
print(type(db.sql_database.get_table_columns))
print(type(db.sql_database.get_usable_table_names))
print(type(db.sql_database.insert_into_table))
print(type(db.sql_database.run_sql))
# SQLDatabase available properties:
print(type(db.sql_database.dialect))
print(type(db.sql_database.engine))
### DatabaseReader 类 ### # db 是 DatabaseReader 的实例:print(type(db)) # DatabaseReader 可用方法:print(type(db.load_data)) ### SQLDatabase 类 ### # db.sql 是 SQLDatabase 的实例:print(type(db.sql_database)) # SQLDatabase 可用方法:print(type(db.sql_database.from_uri)) print(type(db.sql_database.get_single_table_info)) print(type(db.sql_database.get_table_columns)) print(type(db.sql_database.get_usable_table_names)) print(type(db.sql_database.insert_into_table)) print(type(db.sql_database.run_sql)) # SQLDatabase 可用属性:print(type(db.sql_database.dialect)) print(type(db.sql_database.engine))
In [ ]
已复制!
### Testing DatabaseReader
### from SQLDatabase, SQLAlchemy engine and Database URI:
# From SQLDatabase instance:
print(type(db.sql_database))
db_from_sql_database = DatabaseReader(sql_database=db.sql_database)
print(type(db_from_sql_database))
# From SQLAlchemy engine:
print(type(db.sql_database.engine))
db_from_engine = DatabaseReader(engine=db.sql_database.engine)
print(type(db_from_engine))
# From Database URI:
print(type(db.uri))
db_from_uri = DatabaseReader(uri=db.uri)
print(type(db_from_uri))
### 测试 DatabaseReader ### 从 SQLDatabase、SQLAlchemy engine 和 Database URI:# 从 SQLDatabase 实例:print(type(db.sql_database)) db_from_sql_database = DatabaseReader(sql_database=db.sql_database) print(type(db_from_sql_database)) # 从 SQLAlchemy engine:print(type(db.sql_database.engine)) db_from_engine = DatabaseReader(engine=db.sql_database.engine) print(type(db_from_engine)) # 从 Database URI:print(type(db.uri)) db_from_uri = DatabaseReader(uri=db.uri) print(type(db_from_uri))
In [ ]
已复制!
# The below SQL Query example returns a list values of each row
# with concatenated text from the name and age columns
# from the users table where the age is greater than or equal to 18
query = f"""
SELECT
CONCAT(name, ' is ', age, ' years old.') AS text
FROM public.users
WHERE age >= 18
"""
# 以下 SQL 查询示例返回每行的值列表 # 其中 name 和 age 列的文本已连接 # 来自 users 表,其中 age 大于或等于 18 query = f""" SELECT CONCAT(name, ' is ', age, ' years old.') AS text FROM public.users WHERE age >= 18 """
In [ ]
已复制!
# Please refer to llama_index.utilities.sql_wrapper
# SQLDatabase.run_sql method
texts = db.sql_database.run_sql(command=query)
# Display type(texts) and texts
# type(texts) must return <class 'list'>
print(type(texts))
# Documents must return a list of Tuple objects
print(texts)
# 请参考 llama_index.utilities.sql_wrapper # SQLDatabase.run_sql 方法 texts = db.sql_database.run_sql(command=query) # 显示 type(texts) 和 texts # type(texts) 必须返回print(type(texts)) # 文档必须返回 Tuple 对象列表 print(texts)
In [ ]
已复制!
# Please refer to llama_index.readers.database.DatabaseReader.load_data
# DatabaseReader.load_data method
documents = db.load_data(query=query)
# Display type(documents) and documents
# type(documents) must return <class 'list'>
print(type(documents))
# Documents must return a list of Document objects
print(documents)
# 请参考 llama_index.readers.database.DatabaseReader.load_data # DatabaseReader.load_data 方法 documents = db.load_data(query=query) # 显示 type(documents) 和 documents # type(documents) 必须返回print(type(documents)) # 文档必须返回 Document 对象列表 print(documents)
In [ ]
已复制!
index = VectorStoreIndex.from_documents(documents)
index = VectorStoreIndex.from_documents(documents)