Υπολογιζόμενα πεδία και σενάρια πλήκτρων
Τα υπολογιζόμενα πεδία και τα σενάρια πλήκτρων χρησιμοποιούν την προγραμματιστική γλώσσα Python. Ο υπολογισμός ή σενάριο είναι η υλοποίηση της συνάρτησης της οποίας η υπογραφή παρέχεται για σας.
- B.1. Τιμές πεδίου
- B.2. Σχετικές εγγραφές
- B.3. Έλεγχος για κενές τιμές
- B.4. Χρήση του πλήρους API pygda
B.1. Τιμές πεδίου
Για παράδειγμα,
record["name_first"]
B.2. Σχετικές εγγραφές
Για παράδειγμα, το
record.related["location"]
B.2.1. Εγγραφές μοναδικά συσχετισμένες
Για σχέσεις που ορίζουν μια μοναδική εγγραφή, μπορείτε να πάρετε την τιμή ενός πεδίου σε αυτήν την εγγραφή. Για παράδειγμα, το
record.related["location"]["name"]
B.3. Έλεγχος για κενές τιμές
Το πώς ελέγχετε κενές τιμές εξαρτάται από τον τύπο του πεδίου:
- B.3.1. Πεδία μη κειμένου
- B.3.2. Πεδία κειμένου
B.3.1. Πεδία μη κειμένου
Τα πεδία μη κειμένου μπορεί να είναι κενά, δείχνοντας ότι ο χρήστης δεν έχει εισάγει καμία τιμή στο πεδίο. Για παράδειγμα, το Glom δεν θεωρεί ότι μια κενή τιμή σε ένα αριθμητικό πεδίο πρέπει να σημαίνει 0.
Μπορείτε να ελέγξετε αν ένα πεδίο είναι κενό χρησιμοποιώντας το None του Python. Για παράδειγμα:
if(record["contact_id"] == None): return "No Contact" else: return record.related["contacts"]["name_full"]
Μπορείτε επίσης να ελέγξετε αν υπάρχουν συσχετισμένες εγγραφές. Για παράδειγμα:
if(record.related["contacts"] == None): return "No Contact" else: return record.related["contacts"]["name_full"]
B.3.2. Πεδία κειμένου
Για πεδία κειμένου, θα πρέπει να ελέγξετε για συμβολοσειρές μηδενικού μήκους. Δεν είναι δυνατό στο Glom να διακρίνετε μεταξύ συμβολοσειρών μηδενικού μήκους και της απουσίας οποιασδήποτε συμβολοσειράς, επειδή δεν υπάρχει κανένα πλεονέκτημα να το κάνετε. Για παράδειγμα:
if(record["name_full"] == ""): return "No Name" else: return record["name_full"]
B.4. Χρήση του πλήρους API pygda
pygda είναι μια API Python για το API libgda. Το γνώρισμα σύνδεση της εγγραφής παρέχει μια gda.connection που μπορεί να χρησιμοποιηθεί για πρόσβαση της τρέχουσας βάσης δεδομένων άμεσα. Αυτό επιτρέπει να τρέξετε οποιοδήποτε ερώτημα SQL, για παράδειγμα να διαβάσετε δεδομένα από τη βάση δεδομένων με ένα SELECT, ή να αλλάξετε τιμές στη βάση δεδομένων με ένα UPDATE. Σημειώστε ότι η σύνδεση είναι ήδη ανοικτή, έτσι μπορείτε να αποφύγετε τη δύσκολη εργασία ορισμού των λεπτομερειών της σύνδεσης.
Το γνώρισμα table_name της εγγραφής παρέχει επίσης το όνομα του τρέχοντος πίνακα.
Αυτό το παράδειγμα διαβάζει όλα τα δεδομένα από τον τρέχοντα πίνακα και εμφανίζει τις τιμές στο τερματικό:
# Χρησιμοποιήστε την σύνδεση της τρέχουσας βάσης δεδομένων # για να πάρετε όλα τα δεδομένα για τον τρέχοντα πίνακα. # # record.connection είναι ένα ήδη ανοικτό αντικείμενο gda.connection, # που μας γλυτώνει από το άνοιγμα της σύνδεσης, # ή ακόμα τη γνώση του ονόματος της βάσης δεδομένων. query = "SELECT * FROM %s" % record.table_name data_model = gda.gda_execute_select_command(record.connection, query) rows = data_model.get_n_rows() columns = data_model.get_n_columns() print " Number of columns: ", columns for i in range(columns): print " column ", i; print " name=", data_model.get_column_title(i) # Εύρεση αν είναι ένα πρωτεύον κλειδί: field = data_model.describe_column(i) if field.get_primary_key(): print " (primary key)" print "\n"; print " Number of rows: ", rows for row_index in range(rows): print " row ", row_index; for col_index in range(columns): print " value=", data_model.get_value_at(col_index, row_index).get() print "\n";