cboettig commited on
Commit
27b4ed0
·
1 Parent(s): 0539eb3

using in-memory duckdb+views

Browse files
Files changed (1) hide show
  1. app.py +21 -29
app.py CHANGED
@@ -14,41 +14,33 @@ os.environ["OPENAI_API_KEY"] = st.secrets["OPENAI_API_KEY"]
14
  st.set_page_config(page_title="Protected Areas Database Chat", page_icon="🦜")
15
  st.title("🦜 Protected Areas Database Chat")
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
 
18
- # +
19
- import duckdb
20
- con = duckdb.connect("pad_views.duckdb")
21
-
22
- con.sql("create or replace view agency_name as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-agency-name.parquet'")
23
- con.sql("create or replace view agency_type as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-agency-type.parquet'")
24
- con.sql("create or replace view category as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-category.parquet'")
25
- con.sql("create or replace view designation_type as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-desgination-type.parquet'")
26
- con.sql("create or replace view easement as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-easement.parquet'")
27
- con.sql("create or replace view fee as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-fee.parquet'")
28
- con.sql("create or replace view marine as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-marine.parquet'")
29
- con.sql("create or replace view iucn as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-iucn.parquet'")
30
- con.sql("create or replace view public_access as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-public-access.parquet'")
31
- con.sql("create or replace view state_name as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-state-name.parquet'")
32
- con.sql("create or replace view combined as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-combined.parquet'")
33
- con.close()
34
- # -
35
-
36
- #db_uri = "duckdb:///:memory:"
37
- db_uri = "duckdb:///pad_views.duckdb"
38
 
39
  # User inputs
40
  radio_opt = ["US Protected Areas v3"]
41
  selected_opt = st.sidebar.radio(label="Choose suitable option", options=radio_opt)
42
 
43
- # Setup agent
44
- @st.cache_resource(ttl="2h")
45
- def configure_db(db_uri):
46
- return SQLDatabase.from_uri(database_uri=db_uri, view_support=True)
47
- db = configure_db(db_uri)
48
-
49
-
50
- db.get_usable_table_names()
51
-
52
  llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
53
  agent = create_sql_agent(llm, db=db, agent_type="openai-tools", verbose=True)
54
 
 
14
  st.set_page_config(page_title="Protected Areas Database Chat", page_icon="🦜")
15
  st.title("🦜 Protected Areas Database Chat")
16
 
17
+ db_uri = "duckdb:///:memory:"
18
+ engine = create_engine(db_uri)
19
+ from sqlalchemy import text
20
+ con = engine.connect()
21
+ con.execute(text("create or replace view agency_name as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-agency-name.parquet'"))
22
+ con.execute(text("create or replace view agency_name as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-agency-name.parquet'"))
23
+ con.execute(text("create or replace view agency_type as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-agency-type.parquet'"))
24
+ con.execute(text("create or replace view category as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-category.parquet'"))
25
+ con.execute(text("create or replace view designation_type as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-desgination-type.parquet'"))
26
+ con.execute(text("create or replace view easement as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-easement.parquet'"))
27
+ con.execute(text("create or replace view fee as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-fee.parquet'"))
28
+ con.execute(text("create or replace view marine as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-marine.parquet'"))
29
+ con.execute(text("create or replace view iucn as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-iucn.parquet'"))
30
+ con.execute(text("create or replace view public_access as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-public-access.parquet'"))
31
+ con.execute(text("create or replace view state_name as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-state-name.parquet'"))
32
+ con.execute(text("create or replace view combined as select * from 'https://huggingface.co/datasets/boettiger-lab/pad-us-3/resolve/main/parquet/pad-combined.parquet'"))
33
+
34
+ db = SQLDatabase(engine, view_support=True)
35
+ db.get_usable_table_names()
36
+
37
+
38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
  # User inputs
41
  radio_opt = ["US Protected Areas v3"]
42
  selected_opt = st.sidebar.radio(label="Choose suitable option", options=radio_opt)
43
 
 
 
 
 
 
 
 
 
 
44
  llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
45
  agent = create_sql_agent(llm, db=db, agent_type="openai-tools", verbose=True)
46