summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarik Gamble <darik.gamble@gmail.com>2015-01-07 15:27:22 -0500
committerAmjith Ramanujam <amjith.r@gmail.com>2015-01-10 00:27:05 -0800
commitf532126de117faca621f3e3989b62819d659bf8b (patch)
treeff5da956109e4fc0916f741a6f139f75fed58a2f
parent7950b8a6ee5ea9feac6db2c335e7734cafc4e775 (diff)
add new ipython magic %pgcli for data exploration
-rw-r--r--pgcli/magic.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/pgcli/magic.py b/pgcli/magic.py
new file mode 100644
index 00000000..112a6e9b
--- /dev/null
+++ b/pgcli/magic.py
@@ -0,0 +1,34 @@
+from pgcli.main import PGCli
+
+def load_ipython_extension(ipython):
+
+ #This is called via the ipython command '%load_ext pgcli.magic'
+
+ #first, load the sql magic if it isn't already loaded
+ if not ipython.find_line_magic('sql'):
+ ipython.run_line_magic('load_ext', 'sql')
+
+ #register our own magic
+ ipython.register_magic_function(pgcli_line_magic, 'line','pgcli')
+
+def pgcli_line_magic(line):
+
+ #for now, assume line is connection string e.g. postgres://localhost
+ uri = line
+
+ pgcli = PGCli()
+ pgcli.connect_uri(uri)
+
+ try:
+ pgcli.run_cli()
+ except SystemExit:
+ pass
+
+ if not pgcli.query_history:
+ return
+
+ q = pgcli.query_history[-1]
+ if q.successful:
+ ipython = get_ipython()
+ return ipython.run_cell_magic('sql', uri, q.query)
+