Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: sqlite και html

sqlite και html 8 Χρόνια 5 Μήνες πριν #3707

  • cps
  • Το Άβαταρ του/της cps
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 56
Καλημέρα, έχω γράψει αυτό
import sqlite3
import os
c = sqlite3.connect('test.db')
cur = c.cursor()
cur.execute("SELECT name from dedomena")
rows=cur.fetchall()
 
html='''<html>
<head>
<meta charset="utf-8"> 
</head>
<body>
<table>
<tr>
<td>όνομα</td>
</tr>
<tr>
<td>{0}</td>
</tr>
</table>
</body>
</html>''' 
html = html.format(rows)    
 
fh = open("test.html", "w")
fh.write(html)
fh.close()

το αποτέλεσμα που παίρνω στο browser είναι αυτό
όνομα
[('Κώστας',), ('Αντώνης',)]

Πώς πρέπει να το φτιάξω για να το παίρνω σωστά χωρίς σημεία στίξης και αγκύλες, και το ένα κάτω από το άλλο. Δηλαδή να φτιάξω έναν κανονικό πίνακα;
Τελευταία διόρθωση: 8 Χρόνια 5 Μήνες πριν από cps.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

sqlite και html 8 Χρόνια 5 Μήνες πριν #3708

  • embryo
  • Το Άβαταρ του/της embryo
  • Αποσυνδεμένος
  • pyth__
  • Δημοσιεύσεις: 92
  • Ληφθείσες Ευχαριστίες 31
Πρόσθεσε αυτό
rows = '<br>'.join([i[0] for i in rows if i[0] != None])
μετά το
rows=cur.fetchall()
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": cps

sqlite και html 8 Χρόνια 5 Μήνες πριν #3709

  • cps
  • Το Άβαταρ του/της cps
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 56
rows = '<br>'.join([i[0] for i in rows if i[0] != None])

Στην περίπτωση εισαγωγής πεδίων με αριθμούς, η σύνταξη παραμένει η ίδια ή αλλάζει;
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

sqlite και html 8 Χρόνια 5 Μήνες πριν #3710

  • embryo
  • Το Άβαταρ του/της embryo
  • Αποσυνδεμένος
  • pyth__
  • Δημοσιεύσεις: 92
  • Ληφθείσες Ευχαριστίες 31
Τώρα που ξαναδιάβασα την αρχική σου ερώτηση είδα ότι ο κώδικας πρέπει να είναι
rows = '</td><td>'.join([str(i[0]) for i in rows if i[0] is not None])
για να φτιάχνει table cells και να μετατρέπει και τα νούμερα σε strings.
Αν έχεις python 2.7 το str() πρέπει μάλλον να γίνει unicode() (για ελληνικά)
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": cps

sqlite και html 8 Χρόνια 5 Μήνες πριν #3711

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
Ο κώδικάς σου πρέπει να γίνει όπως παρακάτω:
  • Το ερώτημά σου επιστρέφει κάθε γραμμή που βρίσκει ως tuple, άρα πρέπει να επιλέξεις ποιό στοιχείο της εγγραφής θέλεις. Εδώ επειδή επιστρέφει μόνο ένα πεδίο το πρώτο ([0])
  • Κατόπιν δημιουργείς ένα string που θα παίρνει τα αποτελέσματα σε μορφή html. Εδώ table_row.
  • Την κάθε γραμμή που δημιουργείται την προσθέτεις σε μια άλλη μεταβλητή table_rows.
  • Τέλος, το αποτέλεσμα το προσθέτεις στο τελικό html.

ΥΓ: Τις τροποποιήσεις δεν τις δοκίμασα. Πιθανόν να υπάρχουν συντακτικά λάθη. Επίσης ο κώδικάς σου δεν κλείνει τη βάση δεδομένων και δεν παγιδεύει λάθη. Αν δυσκολευτείς, εδώ είμαστε.

import sqlite3
import os
c = sqlite3.connect('test.db')
cur = c.cursor()
cur.execute("SELECT name from dedomena")
rows = cur.fetchall()
 
html='''<html>
<head>
<meta charset="utf-8"> 
</head>
<body>
<table>
<tr>
<td>όνομα</td>
</tr>
{0}
</table>
</body>
</html>'''
 
table_row = '''<tr>
<td>{0}</td>
</tr>'''
 
table_rows = ''
 
for row in rows:
    table_rows = table_rows + table_row.format(row[0])
 
html = html.format(table_rows)    
 
fh = open("test.html", "w")
fh.write(html)
fh.close()
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": cps

sqlite και html 8 Χρόνια 5 Μήνες πριν #3712

  • cps
  • Το Άβαταρ του/της cps
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 56
προφανώς μιλάς για την εντολή
import sqlite3
import os
c = sqlite3.connect('test.db')
cur = c.cursor()
cur.execute("SELECT name from dedomena")
c.close()
c.close()
Αυτή δεν είναι που κλείνει τη βάση δεδομένων;
Για τις παγιδεύσεις λαθώς που γράφεις τι εννοείς; Τι λάθος θα μπορούσα να παγιδεύσω σε έναν κώδικα που απλά μεταφέρει πληροφορίες από μία βάση δεδομένων; Δεν το γνωρίζω το θέμα και γι αυτό ρωτάω.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

sqlite και html 8 Χρόνια 5 Μήνες πριν #3713

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
Σωστά, έτσι κλείνει η σύνδεση με τη βάση δεδομένων.

Για την παγίδευση σφαλμάτων τώρα. Ποτέ δεν ξέρεις τι μπορεί να συμβεί.
Π.χ. Δεν υπάρχει το αρχείο test.db, το ερώτημα δεν επιστρέφει εγγραφές, δεν έχεις δικαίωμα να δημιουργήσεις το test.html και πάρα πολλά άλλα που δεν μπορώ να σκεφτώ τώρα.
Βέβαια, αν κώδικας είναι για πειραματισμό και μάθηση δεν υπάρχει επιτακτικός λόγος να γράψεις παγίδευση σφαλμάτων και ελέγχους. (Αν και εν μέρει διαφωνώ, μ' αυτό, γιατί είναι μια καλή πρακτική να παγιδεύεις σφάλματα.)
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": cps

sqlite και html 8 Χρόνια 5 Μήνες πριν #3714

  • cps
  • Το Άβαταρ του/της cps
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 56
Προφανώς μιλάς για τις εξαιρέσεις, η αλήθεια είναι ότι είναι κάτι που με δυσκολεύει, ακόμα και στη σύνταξη.
Πάντως ευχαριστώ πάρα πολύ για τη βοήθεια.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

sqlite και html 8 Χρόνια 5 Μήνες πριν #3715

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
cps έγραψε:
Προφανώς μιλάς για τις εξαιρέσεις, η αλήθεια είναι ότι είναι κάτι που με δυσκολεύει, ακόμα και στη σύνταξη.
Πάντως ευχαριστώ πάρα πολύ για τη βοήθεια.


Απλά, χρειάζεται λίγος πειραματισμός και διάβασμα του manual. ;)
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.425 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου