I understand relational database concepts well and can create and manage databases from scratch. Now I want to learn how to build real-world desktop applications that connect to and work with those databases. I have some experience with Python and Tkinter, but I'm interested in exploring other options. I'm looking for a technology with strong relational database support, a reasonable learning curve, practical desktop capabilities, and long-term relevance. What would you recommend, and what would you choose if you were starting from scratch?
4 Answers
The architecture matters at least as much as the language. A single-user application can often connect directly to a local SQLite database. If several desktop clients need to share a remote database, it is usually safer to put an API or service layer between the applications and the database rather than distributing database credentials to every client. Keeping SQL and data-access code in its own layer instead of scattering queries throughout the UI will also make the project easier to maintain. Building the same small inventory app in PySide6 and C# would be a useful way to compare them.
C# and .NET are a practical starting point for Windows desktop development, while Python remains a perfectly reasonable choice if you want to move quickly and already know it. Other languages such as Java, Rust, Go, or C++ can also work, but they may involve more setup or less mature desktop tooling for this particular use case. For a platform-specific application, the native ecosystem—such as Swift and Apple’s desktop frameworks on macOS—can also be the most natural choice.
You do not necessarily need to switch languages. Since you already know some Python, try PySide6 instead of Tkinter. It is based on Qt, provides more capable desktop widgets, and includes database support through QtSql. The database concepts and SQL work are largely the same regardless of the language, so staying with Python may let you focus on application design rather than learning an entirely new ecosystem.
That makes sense. I may build a small project with Python first and see whether the framework or the application structure is the bigger challenge.
For a Windows-first application, C# with WPF and Entity Framework Core is probably the strongest overall choice. The tooling, database libraries, data binding, and Visual Studio integration are very mature, which makes building business-style desktop software relatively straightforward. If you need cross-platform .NET, Avalonia UI is worth investigating. Java with JavaFX is another option, although it may require more manual setup.
Are there any learning resources you would recommend for getting started with C#, WPF, and the database side of .NET?

How difficult is the transition from Python to C#? I’m wondering whether the .NET ecosystem is approachable enough for a beginner who already understands programming basics.