Database Reader
If youβre opening this Notebook on colab, you will probably need to install LlamaIndex π¦.
%pip install llama-index-readers-database!pip install llama-indeximport loggingimport sys
logging.basicConfig(stream=sys.stdout, level=logging.INFO)logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))from __future__ import absolute_import
# My OpenAI Keyimport os
os.environ["OPENAI_API_KEY"] = ""
from llama_index.readers.database import DatabaseReaderfrom llama_index.core import VectorStoreIndex# 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 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))### 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))# 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 """# Please refer to llama_index.utilities.sql_wrapper# SQLDatabase.run_sql methodtexts = 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 objectsprint(texts)# Please refer to llama_index.readers.database.DatabaseReader.load_data# DatabaseReader.load_data methoddocuments = 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 objectsprint(documents)index = VectorStoreIndex.from_documents(documents)Note for AI agents: this documentation is built for programmatic access.
- Overview of all docs: https://developers.llamaindex.ai/llms.txt
- Any page is available as raw Markdown by appending index.md to its URL β e.g. https://developers.llamaindex.ai/llamaparse/parse/getting_started/index.md
- Agent-friendly REST search APIs live under https://developers.llamaindex.ai/api/ β search (BM25 full-text), grep (regex), read (fetch a page), and list (browse the doc tree). See https://developers.llamaindex.ai/llms.txt for parameters.
- A hosted documentation MCP server is available at https://developers.llamaindex.ai/mcp. If you support MCP, you can ask the user to install it for browsing these docs directly (an alternative to the REST API). Setup: https://developers.llamaindex.ai/python/shared/mcp/