Reputation:
I have been building business database applications such as finance, inventory and other business requirement applications. I am planning to shift to Python. What would be the tools to start with best. I would need to do master, transaction forms, processing (back end), reports and that sort of thing. The database would be postgress or mysql. As I am new to Python I understand that I need besides Python the ORM and also a framework. My application is not a web site related but it could also be need to be done over the web if needed.
How to choose the initial setup of tool combinations?
Upvotes: 9
Views: 10316
Reputation: 401
Since I did not like any of the frameworks available, I decided to write something myself. Maybe you would like to check out Pylax. It is built in GTK and uses embedded Python for scripting. The backend is SQLite, for now.
Upvotes: 0
Reputation: 10275
If I were you, I would probably first look whether a web-based solution based on Django does the trick. If you need a little bit better look and feel, add jQuery to the mix. If it provides way too little functionality, go for PyQt. If you have a lot of very small applications, go for a mix of technologies. Below, you find my (somewhat lengthy) reasoning for this recommendation.
Webapp vs. desktop application
One year ago, we had a business db and needed a front-end. We had to decide what technology to use for the front-end. We considered:
The advantages for PyQt from our perspective:
We however decided against PyQt and for a web-based solution instead. Reasons were:
In a nutshell: feature-rich front-ends with a lot of functionality in a controlled deployment environment are probably easier to implement with Qt. For our light-weight front-ends, a server-based solution seemed better to us.
Which web framework?
Now that we had decided on a technology, we had to choose a framework. We researched a bit, and looked at two alternatives in detail:
We evaluated the two alternatives, and at the end settled for the second one. The decision was driven by our really "light-light-weight" front-end requirements (a lot of very small applications). A stack of software - which we can mix and match as needed - seemed better to us. We can re-use SQLAlchemy in situations, where we don't need a web-front-end, we can just use CherryPy without a templating library and a ORM, and so on. In many other cases, I would however choose Django over this stack.
To sum up:
Upvotes: 12
Reputation: 6492
just FYI, for PyQT, the book has a chapter 15 with Databases, It looks good. and the book has something with data and view etc. I have read it and I think it's well worth your time:)
Upvotes: 0
Reputation: 273756
If your application needs to work both on the desktop and on the web in the future, you can consider creating a web-based application with a distributable server. Such things are pretty easy to do with Python both in trivial ways and in more powerful ones such as using Twisted.
If desktop only is your direction, then indeed as Alex has said - go for PyQt. It's really easy to use and provides very powerful GUI capabilities with versatile DB bindings.
As for the DB - which one are you accustomed to using? If you're, say, a MySQL guru, it would be prudent to first of all check out Python's MySQL bindings. For an ORM definitely try SQLAlchemy.
Perhaps more details in the question can help providing a fuller answer.
More details (for your comment):
If PostgreSQL is your direction, Python has PyGreSQL as a binding. It is open-source, like Python itself, so you should have no problem with cost-free applications for the user. As for Python being the right choice, I think it is. Consider that many powerful websites run Python (YouTube, Reddit, even Google for some applications). Python is also used in several high-volume applications such as the source control systems Mercurial and Bazaar, and the mailing list manager mailman.
Upvotes: 1
Reputation: 882621
As Boudewijn Rempt wrote here, "for the easiest way to create a [[NON-web]] database application, you might want to take a look at PyQt". He wrote this 6 years ago, but I think it's perfectly true today, too. pyqt4's QtSql module, in particular, supports MySQL, PostgreSQL, and several other databases.
Upvotes: 1