sql-athame
django-query-profil
sql-athame | django-query-profil | |
---|---|---|
2 | 2 | |
11 | - | |
- | - | |
0.0 | - | |
about 1 year ago | - | |
Python | ||
MIT License | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
sql-athame
-
Show HN: Sqlbind a Python library to compose raw SQL
I had my own take on this concept[1], though with considerably less language magic involved. I imagine there's a lot of these kind of things running around. My criteria were:
a) let me write actual SQL, not a python DSL that generates SQL
b) be placeholder-safe
c) be composable
[1] https://github.com/bdowning/sql-athame
-
Write an SQL query builder in 150 lines of Python
This is my middle-ground solution for Python: https://github.com/bdowning/sql-athame
Still fundamentally manipulating SQL text (which is a feature as I don't want to learn a full DSL), but it handles wrangling embedded placeholders while you're composing stuff and some other common compositional tasks. It's worked well for me anyway but I'm under no illusions it'd be right for everyone.
Not an original concept regardless; my original version of this was in Node: https://github.com/bdowning/sql-assassin, but a few years after I wrote that (and mostly didn't use it) I found https://github.com/gajus/slonik which was very similar and much more fleshed-out; I rolled _some_ of its concepts and patterns into sql-athame.
django-query-profil
-
Show HN: Sqlbind a Python library to compose raw SQL
But that's still not backend-specific SQL?
There should be an interface method for this. Why does psycopg call it mogrify?
https://django-debug-toolbar.readthedocs.io/en/latest/panels... :
> debug_toolbar.panels.sql.SQLPanel: SQL queries including time to execute and links to EXPLAIN each query
But debug toolbars mostly don't work with APIs.
https://github.com/django-query-profiler/django-query-profil... :
> Django query profiler - one profiler to rule them all. Shows queries, detects N+1 and gives recommendations on how to resolve them
https://github.com/jazzband/django-silk :
> Silk is a live profiling and inspection tool for the Django framework. Silk intercepts and stores HTTP requests and database queries before presenting them in a user interface for further inspection
-
My £4 a month server can handle 4.2M requests a day
I agree that this stuff can definitely be handled better.
https://github.com/django-query-profiler/django-query-profil... has a neat option for detecting likely N+1 queries. I usually use the Django Debug Toolbar for this.
Django's ".only()" method lets you specify just the columns you want to retrieve - with the downside that any additional property access can trigger another SQL query. I thought I'd seen code somewhere that can turn those into errors but I'm failing to dig it up again now.
I've used the assertNumQueries() assertion in tests to guard against future changes that accidentally increase the number of queries being made without me intending that.
The points you raise are valid, but there are various levels of mitigations for them. Always room for improvement though!
What are some alternatives?
PyPika - PyPika is a python SQL query builder that exposes the full richness of the SQL language using a syntax that reflects the resulting query. PyPika excels at all sorts of SQL queries but is especially useful for data analysis.
cryptogalaxy - Get any cryptocurrencies ticker and trade data in real time from multiple exchanges and then save it in multiple storage systems.
pgcli - Postgres CLI with autocompletion and syntax highlighting
Protobuf - Protocol Buffers - Google's data interchange format
sqlc - Generate type-safe code from SQL
django-query-profiler - Django query profiler - one profiler to rule them all. Shows queries, detects N+1 and gives recommendations on how to resolve them
postgres-typed
FrameworkBenchmarks - Source for the TechEmpower Framework Benchmarks project
xql - SQL builder and utilities library for node.js (runs in browser as well).
azure-docs - Open source documentation of Microsoft Azure
django-silk - Silky smooth profiling for Django