OMG, please no! Please, for all that is decent, do not use an ORM in any
code I will ever need to look at!

The SQL injection attack is just silly if you don't run arbitrary strings.
Don't ever do that.  But running a query that is hard coded as text, with
just a few parameters filled in (the DB-API is handy) is good... yes, check
those parameters for sanity and permission first.

On Fri, Feb 21, 2020 at 10:39 PM Bruce Leban <br...@leban.us> wrote:

>
> On Fri, Feb 21, 2020 at 5:53 AM <minecraft2...@gmail.com> wrote:
>
>> The idea is to add a new string prefix 's' for SQL string. This string
>> doesn't do anything in Python, unlike b"" or f"" strings, but interactive
>> Python shells like IPython or Jupyter can parse the following characters as
>> SQL syntax instead of Python syntax and give SQL syntax highlighting and
>> autocompletion, and if they are configured correctly, they can do column
>> name autocompletion. Unfortunately when I try to type s"select * from
>> table" it gave me syntax error instead, so I think this need to be
>> implemented in Python language itself instead of module
>>
>
> First, as to SQL specifically, writing literal SQL in code is a bad idea.
> It's easy to have bugs, especially sql injection. You should use an ORM at
> the very least a SQL builder. Instead of:
>
>     sf"select * from sometable where name = '{userName}'"
>
> you would write something like:
>
>     sql.query(SomeTable).filter_by(name=userName).all()
>
> And I believe the same thing applies to HTML and just about anything else
> that has a complicated enough syntax that this idea would be useful for.
>
> Second, if I had a strong reason to do something like this, I'd want to
> use a function that enabled me to add run-time sanity checking (at least
> during development and testing phase):
>
>     _html_(f"This is a <b><i>{adverb} bad</b></i> example.")
>
> and in production that function would just return the value untouched.
>
> --- Bruce
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-ideas@python.org/message/GVTWOF2KDOHO4E4EM4CAESDVDETR5S6R/
> Code of Conduct: http://python.org/psf/codeofconduct/
>


-- 
Keeping medicines from the bloodstreams of the sick; food
from the bellies of the hungry; books from the hands of the
uneducated; technology from the underdeveloped; and putting
advocates of freedom in prisons.  Intellectual property is
to the 21st century what the slave trade was to the 16th.
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/VRU4A7BQK5OZ6SA4QIQEBLZFGKNO7JAM/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to