Imam zelo dolgo vprašanje. Rad bi jo razdelil v več vrstic v Pythonu. V javascriptu bi to lahko naredil tako, da bi uporabil več stavkov in jih združil z operatorjem +
(vem, morda to ni najbolj učinkovit način, vendar me v tej fazi ne zanima učinkovitost, temveč le berljivost kode). Primer:
var long_string = 'some text not important. just garbage to' +
'illustrate my example';
Nekaj podobnega sem poskušal narediti v Pythonu, vendar ni delovalo, zato sem za razdelitev dolgega niza uporabil \
. Vendar pa nisem prepričan, ali je to edini/najboljši/najboljši način. Izgleda nerodno.
Dejanska koda:
query = 'SELECT action.descr as "action", '\
'role.id as role_id,'\
'role.descr as role'\
'FROM '\
'public.role_action_def,'\
'public.role,'\
'public.record_def, '\
'public.action'\
'WHERE role.id = role_action_def.role_id AND'\
'record_def.id = role_action_def.def_id AND'\
'action.id = role_action_def.action_id AND'\
'role_action_def.account_id = ' + account_id + ' AND'\
'record_def.account_id=' + account_id + ' AND'\
'def_id=' + def_id
Govorite o večvrstičnih nizih? Enostavno, za začetek in konec uporabite trojne narekovaje.
s = """ this is a very
long string if I had the
energy to type more and more ..."""
Uporabite lahko tudi enojne narekovaje (seveda tri na začetku in koncu) in tako dobljeni niz s
obravnavate enako kot kateri koli drug niz.
OPOMBA: Tako kot pri vsakem nizu postane vse, kar je med začetnimi in končnimi narekovaji, del niza, zato ima ta primer na začetku prazno mesto (kot je opozoril @root45). Ta niz bo vseboval tudi prazne in nove vrstice.
Tj:
' this is a very\n long string if I had the\n energy to type more and more ...'
Dolge vrstice lahko v Pythonu sestavimo tudi takole:
s = ("this is a very"
"long string too"
"for sure ..."
)
ki ne bo vključevala dodatnih praznih ali novih vrstic (to je namerni primer, ki prikazuje, kakšen bo učinek izpuščanja praznih vrstic):
'this is a verylong string toofor sure ...'
Začetnice niso potrebne, preprosto vstavite niz, ki ga želite združiti, v par oglatih oklepajev in upoštevajte vse potrebne presledke in nove vrstice.
Če ne želite večvrstičnega niza, ampak imate le dolg enovrstični niz, lahko uporabite oklepaje, vendar pazite, da med segmenti niza ne bo vejic, saj bo to tuple.
query = ('SELECT action.descr as "action", '
'role.id as role_id,'
'role.descr as role'
' FROM '
'public.role_action_def,'
'public.role,'
'public.record_def, '
'public.action'
' WHERE role.id = role_action_def.role_id AND'
' record_def.id = role_action_def.def_id AND'
' action.id = role_action_def.action_id AND'
' role_action_def.account_id = '+account_id+' AND'
' record_def.account_id='+account_id+' AND'
' def_id='+def_id)
V stavku SQL, kot je ta, ki ga sestavljate, so v redu tudi večvrstični nizi. Če pa bi bil dodaten bel prostor, ki bi ga vseboval večvrstični niz, težava, potem bi bil to dober način za doseganje želenega.
Vaša dejanska koda ne bi smela delovati, saj vam manjkajo beli presledki na koncu "vrstic" (npr.: role.descr kot roleFROM...
)
Za večvrstične nize so na voljo trojni narekovaji:
string = """line
line2
line3"""
Vsebuje prelome vrstic in dodatne presledke, vendar za SQL to ni težava.