Έχω ένα πολύ μεγάλο ερώτημα. Θα ήθελα να το χωρίσω σε πολλές γραμμές στην 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 ..."
)
η οποία δεν θα περιλαμβάνει επιπλέον κενά ή newlines (αυτό είναι ένα σκόπιμο παράδειγμα που δείχνει τι αποτέλεσμα θα έχει η παράλειψη των κενών):
'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 as roleFROM...
)
Υπάρχουν τριπλά εισαγωγικά για συμβολοσειρές πολλών γραμμών:
string = """line
line2
line3"""
Θα περιέχει τα διαλείμματα γραμμής και τα επιπλέον κενά, αλλά για την SQL αυτό δεν αποτελεί πρόβλημα.