HackerTrans
TopNewTrendsCommentsPastAskShowJobs

pgjones

no profile record

Submissions

Show HN: SQL-tString a t-string SQL builder in Python

github.com
85 points·by pgjones·geçen yıl·35 comments

Tell HN: Flask and Quart have now partially merged

20 points·by pgjones·3 yıl önce·7 comments

Tips and techniques for modern Flask apps

pgjones.dev
2 points·by pgjones·3 yıl önce·0 comments

Faster Routing for Flask and Quart

pgjones.dev
4 points·by pgjones·4 yıl önce·0 comments

comments

pgjones
·geçen yıl·discuss
The `sql_context` feature is meant to protect against SQL injection. I think for your usecase you would need to supply all columns, but you could used nested t-strings included based on whatever logic you need.
pgjones
·geçen yıl·discuss
It does parse the SQL. At the moment an expression is defined as all the text between the appropriate separators given the clause.
pgjones
·geçen yıl·discuss
Sorry that is a typo, I meant,

    with sql_context(columns={"x"}):
pgjones
·geçen yıl·discuss
Thank you! My Google foo did not find this.
pgjones
·geçen yıl·discuss
The presence of Absent removes the entire expression, and if that removal results in an empty clause (or group) it will remove that as well. For example if `a = Absent` `WHERE a = {a}` will remove everything, whereas `WHERE a = {a} AND b = {b}` will result in `WHERE b = {b}`.

> Do you support templating a sql tstring into an sql tstring for composition?

Yep
pgjones
·geçen yıl·discuss
Thanks, do you have a reference for SQL grammar - I've had no success finding an official source.
pgjones
·geçen yıl·discuss
If you want to see a usage for this I've built, and use, [SQL-tString](https://github.com/pgjones/sql-tstring) as an SQL builder.
pgjones
·2 yıl önce·discuss
Quart, the ASGI version of Flask, also has background tasks, https://quart.palletsprojects.com/en/latest/how_to_guides/ba..., and there is an extension Quart-Tasks, https://github.com/pgjones/quart-tasks, to run them on a schedule. Via

    @tasks.cron("*/5 * * * *")  # every 5 minutes
    async def infrequent_task():
        ...
In addition Hypercorn, https://github.com/pgjones/hypercorn, (a ASGI and WSGI) also does not use gunicorn, having migrated many years ago.
pgjones
·2 yıl önce·discuss
It is a shame GCRA is not more well known and used for rate limiting. It is, in my view, a better algorithm.

https://medium.com/smarkets/implementing-gcra-in-python-5df1... https://en.m.wikipedia.org/wiki/Generic_cell_rate_algorithm
pgjones
·3 yıl önce·discuss
Yes, I've written about this comparison in detail https://pgjones.dev/blog/fastapi-flask-quart-2022/.
pgjones
·3 yıl önce·discuss
There are new logos for all the Pallets projects and Pallets itself, based on a common theme.
pgjones
·3 yıl önce·discuss
https://pgjones.dev

I blog mostly about Python web developed, especially Flask, Quart and Hypercorn related aspects.
pgjones
·3 yıl önce·discuss
I've three things :),

1. Quart, https://quart.palletsprojects.com, an ASGI (async/await) re-implementation of the Python web MicroFramework Flask. It is now maintained alongside, by the same people, as Flask.

2. Hypercorn, https://hypercorn.readthedocs.io, an ASGI/WSGI server that supports HTTP/1, HTTP/2, and HTTP/3.

3. My book "A Blueprint for Production-Ready Web Applications", which uses both of the above and shows a beginner how to build a full stack app (React frontend) running on AWS. See https://pgjones.dev/tozo/ for details, code, and link to the example app.
pgjones
·4 yıl önce·discuss
It is also easier to manage for Flask - it is very mature and we fixed most of the issues present in FastAPI many years ago.
pgjones
·4 yıl önce·discuss
Flask supports async, see https://flask.palletsprojects.com/en/2.1.x/async-await/.

Also see Quart https://github.com/pgjones/quart (which is Flask re-implemented with async-await) and Quart-Schema, https://github.com/pgjones/quart-schema for swagger docs.
pgjones
·5 yıl önce·discuss
Or Hypercorn https://gitlab.com/pgjones/hypercorn if you want HTTP/1, HTTP/2, and HTTP/3.
pgjones
·5 yıl önce·discuss
You can already do this using Hypothesis with the Pydantic plugin, https://pydantic-docs.helpmanual.io/hypothesis_plugin/. Here is an example for Quart-Schema (similar setup to FastAPI) https://pgjones.dev/blog/automatic-api-testing-2021.