How did it all begin?
Earlier this year I wrote pgcli to scratch my own itch. I realized that most of the work that went into that project was not specific to Postgres database. I received a few requests from MySQL users requesting a MySQL equivalent of pgcli. I kept procrastinating for a few months and finally decided to launch a kickstarter campaign to fund the development time. That's this project came into existence. But if you'd like to know why I bothered to write a auto-completing repl with syntax highlighting, here's the reason:
I'm a huge fan of CLIs. Especially REPLs. When I first encountered BPython, I fell in love with it. BPython is a Python REPL that has auto-completion, syntax-highlighting and displays the docstring of functions as you type. Once you get used to that level of pampering, all other REPLs start to look like Dumb Terminals.
When I started using psql for interacting with my Postgres database, I yearned for a BPython equivalent for psql.
One fine day I got a twitter DM from Jonathan Slenders asking me if I'd be interested in trying a new Python library that he's working on called Python-Prompt-Toolkit. This library provided a way to write CLIs without having to deal with ncurses and had the requisite tools for doing auto-completion and syntax-highlighting. So I jumped at the opportunity to try it out. After I got myself familiarized, I started writing pgcli to scratch my own itch.
So this app exists because Jonathan was kind enough to request my feedback.
Does mycli work on Windows?
Yes! I have personally tried it on Windows and it does work. But the unit-tests are not run on a Windows environment. So if things break please report them and I'll fix it asap.
Will there be an equivalent of this for Sqlite/Postgresql?
There is already an equivalent for Postgres. Checkout: http://pgcli.com
I don't have time to write an SQLite version. But if you're interested in doing it, I'd be happy to help you. Please get in touch.
How is the Smart Completion implemented?
Smart Completion uses the Sqlparse library to tokenize the sql statement and uses heuristics to suggest context sensitive completion. It can handle nearly 80% of scenarios (in my testing). But there are still some corner cases where it will suggest only keywords when you might be looking for columns or tables. So it could get frustrating when it refuses to provide completions from a different category. In those scenarios, I tend to turn it off (using the F2 key) and switch to Naive completion which suggests words from all categories.
Writing auto-completion libraries are inherently difficult since you're dealing with incomplete input. Since the parser can't work effectively in many scenarios, the code has to compensate for those corner cases. Which resulted in a lot of testing and patching those cases with one off 'if-conditions'.
What is the license for mycli?
BSD 3-clause license. https://github.com/dbcli/mycli/blob/master/LICENSE.txt
How can I get support for mycli?
We track our bugs and feature requests in Github Issues for this project.
I found a bug, what do I do?
Whoopsie Daisies! I'm sorry you encountered a bug. Please file a bug on Github Issues for this project. I'll fix it asap.
I have a feature request, what do I do?
Sweet! Open a new item on Github Issues. Alternatively, you can take a stab at implementing the new feature yourself. If you'd like some guidance, I'm just an email away. Don't hesitate to contact me.
I want to contribute to this project, how do I do that?
Awesome! I thought you'd never ask. Here's a developer guide that provides basic info on getting started with local development. You're also welcome to contact me, if you need some help getting started.
What's your favorite cuisine?
What's the point in having an FAQ if I don't include at least one frequently asked question. So here it goes:
South Indian, North Indian, Thai, Mexican, Mediterranean, Ethiopian, Japanese, Chinese, Sandwiches, Salads. In that order.