@@ -18,6 +18,8 @@ pip install dune-client
1818
1919# Example Usage
2020
21+ ## Quickstart: run_sql
22+
2123Export your ` DUNE_API_KEY ` (or place it in a ` .env ` file - as in
2224here [ .env.sample] ( ./.env.sample ) and ` source .env ` ).
2325
@@ -39,16 +41,82 @@ query = QueryBase(
3941print (" Results available at" , query.url())
4042
4143dune = DuneClient.from_env()
42- results = dune.refresh(query)
44+ results = dune.run_query(query)
45+
46+ # or as CSV
47+ # results_csv = dune.run_query_csv(query)
48+
49+ # or as Pandas Dataframe
50+ # results_df = dune.run_query_dataframe(query)
4351```
4452
45- For a more elaborate example,
46- visit [ dune-alerts] ( https://github.com/cowprotocol/dune-alerts )
53+ ## Further Examples
54+
55+ ### Get Latest Results
56+ Use ` get_latest_results ` to get the most recent query results without using execution credits.
57+ You can specify a ` max_age_hours ` to re-run the query if the data is too outdated.
58+
59+ ``` python
60+ from dune_client.client import DuneClient
61+
62+ dune = DuneClient.from_env()
63+ results = dune.get_latest_result(1215383 , max_age_hours = 8 )
64+ ```
65+
66+ ## Paid Subscription Features
67+
68+ ### CRUD Operations
69+
70+ If you're writing scripts that rely on Dune query results and want to ensure that your local,
71+ peer-reviewed, queries are being used at runtime, you can call ` update_query ` before ` run_query ` !
72+
73+ Here is a fictitious example making use of this functionality;
74+
75+ ``` python
76+ from dune_client.types import QueryParameter
77+ from dune_client.client import DuneClient
78+
79+ sql = """
80+ SELECT block_time, hash,
81+ FROM ethereum.transactions
82+ ORDER BY CAST(gas_used as uint256) * CAST(gas_price AS uint256) DESC
83+ LIMIT {{ N}}
84+ """
85+
86+ dune = DuneClient.from_env()
87+ query = dune.create_query(
88+ name = " Top {N} Most Expensive Transactions on Ethereum" ,
89+ query_sql = sql,
90+ # Optional fields
91+ params = [QueryParameter.number_type(name = " N" , value = 10 )],
92+ is_private = False # default
93+ )
94+ query_id = query.base.query_id
95+ print (f " Created query with id { query.base.query_id} " )
96+ # Could retrieve using
97+ # dune.get_query(query_id)
98+
99+ dune.update_query(
100+ query_id,
101+ # All parameters below are optional
102+ name = " Top {N} Most Expensive Transactions on {Blockchain} " ,
103+ query_sql = sql.replace(" ethereum" , " {{ Blockchain}} " ),
104+ params = query.base.parameters() + [QueryParameter.text_type(" Blockchain" , " ethereum" )],
105+ description = " Shows time and hash of the most expensive transactions" ,
106+ tags = [" XP€N$IV $H1T" ]
107+ )
108+
109+ dune.archive_query(query_id)
110+ dune.unarchive_query(query_id)
111+
112+ dune.make_private(query_id)
113+ dune.make_public(query_id)
114+ ```
47115
48116# Developer Usage & Deployment
49117
50118## Makefile
51- This project's makefile comes equiped with sufficient commands for local development.
119+ This project's makefile comes equipped with sufficient commands for local development.
52120
53121### Installation
54122
0 commit comments