Sorry for posting to such an old thread — but as someone who also shares a passion for pythonic ‘best’, I thought I’d share our solution.
The solution is to build SQL statements using python’s String Literal Concatenation (http://docs.python.org/), which could be qualified a somewhere between Option 2 and Option 4
Code Sample:
sql = ("SELECT field1, field2, field3, field4 "
"FROM table "
"WHERE condition1=1 "
"AND condition2=2;")
Works as well with f-strings:
fields = "field1, field2, field3, field4"
table = "table"
conditions = "condition1=1 AND condition2=2"
sql = (f"SELECT {fields} "
f"FROM {table} "
f"WHERE {conditions};")
Pros:
- It retains the pythonic ‘well tabulated’ format, but does not add extraneous space characters (which pollutes logging).
- It avoids the backslash continuation ugliness of Option 4, which makes it difficult to add statements (not to mention white-space blindness).
- And further, it’s really simple to expand the statement in VIM (just position the cursor to the insert point, and press SHIFT-O to open a new line).