Имам много дълго запитване. Искам да я разделя на няколко реда в Python. Начинът да го направя на JavaScript би бил да използвам няколко изречения и да ги обединя с оператора +
(знам, че може би това не е най-ефективният начин, но на този етап не ме интересува производителността, а само четливостта на кода). Пример:
var long_string = 'some text not important. just garbage to' +
'illustrate my example';
Опитах се да направя нещо подобно в Python, но не се получи, затова използвах \
, за да разделя дългия низ. Въпреки това не съм сигурен дали това е единственият/най-добрият/най-добрият начин за това. Изглежда неудобно.
Действителен код:
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
Говорите ли за многоредови низове? Лесно, използвайте тройни кавички за начало и край.
s = """ this is a very
long string if I had the
energy to type more and more ..."""
Можете да използвате и единични кавички (разбира се, по 3 в началото и в края) и да третирате получения низ s
като всеки друг низ.
ЗАБЕЛЕЖКА: Както и при всеки друг низ, всичко между началните и крайните кавички става част от низа, така че в този пример има начална празна част (както беше посочено от @root45). Този низ също така ще съдържа празни места и нови редове.
Т.е.,:
' this is a very\n long string if I had the\n energy to type more and more ...'
И накрая, можете да конструирате дълги редове в Python по следния начин:
s = ("this is a very"
"long string too"
"for sure ..."
)
които няма да включват никакви допълнителни празни места или нови редове (това е умишлен пример, показващ какъв ще бъде ефектът от пропускането на празни места):
'this is a verylong string toofor sure ...'
Не са необходими запетаи, просто поставете низовете, които трябва да бъдат обединени, в двойка скоби и не забравяйте да отчетете всички необходими празни и нови редове.
Ако не искате многоредов низ, а просто имате дълъг едноредов низ, можете да използвате скоби, но се уверете, че не поставяте запетаи между сегментите на низа, тогава той ще бъде кортеж.
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)
В SQL изявление като това, което конструирате, многоредовите низове също биха били подходящи. Но ако допълнителните бели полета, които съдържа един многоредов низ, са проблем, тогава това би било добър начин да постигнете това, което искате.
Действителният ви код не би трябвало да работи, липсват бели интервали в края на "редовете" (например: role.descr като roleFROM...
)
Има тройни кавички за многоредов низ:
string = """line
line2
line3"""
Той ще съдържа прекъсвания на редове и допълнителни интервали, но за SQL това не е проблем.