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

ΘΕΜΑ: Mysqldb και WXPYTHON ΠΡΟΒΛΗΜΑ

Mysqldb και WXPYTHON ΠΡΟΒΛΗΜΑ 12 Χρόνια 9 Μήνες πριν #1654

  • STRATOS
  • Το Άβαταρ του/της STRATOS
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 34
  • Ληφθείσες Ευχαριστίες 5
Παίδες γειά σας ελπίζω στην βοήθεια σας γιατι τα νεύρα μου σπάσανε
έχω δημιουργήσει μια ΒΔ,υπάρχει σε αυτή ένας πίνακας example,με τα πεδία id και name.Τώρα δημιούργησα ενα GUI σε wxpython και φυσικά εκεί υπάρxει ένα textctrl όπου ο χρήστης πληκτρολογεί ένα όνομα(το id το δίνω ήδη) και
πατώντας το save το σώζει στην βάση.Και εδώ είναι το πρόβλημα δεν το σώζει έχει πρόβλημα στο encoding και έχω δοκιμάσει πολλά.
Αν μπορεί κάποιος ας με βοηθήσει(για να ηρεμήσουν τα νεύρα μου :angry:)

Ο κώδικάς
import os
import math
import random
import wx
import MySQLdb 
import sys
APP_SIZE_X = 500
APP_SIZE_Y = 300
 
# -*- coding: utf-8 -*-
 
class MyFrame(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, size=(APP_SIZE_X, APP_SIZE_Y))
 
        panel = wx.Panel(self, -1,style=wx.SUNKEN_BORDER)
 
        wx.StaticText(panel, -1,'Name', (10, 55),style=wx.LEFT)
        self.name = wx.TextCtrl(panel, -1, '', (110, 55), (120, -1))
 
        save = wx.Button(panel, 1, 'Save', (70, 215),(130,-1))
        save.Bind(wx.EVT_BUTTON,self.OnSaveAsFile)
 
        quitbtn = wx.Button(panel, 1, 'Quit', (250, 215),(130,-1))
        quitbtn.Bind(wx.EVT_BUTTON,self.OnQuit)
 
    def OnSaveAsFile(self, event):
 
        idis="000"
        newname=self.name.GetValue()
 
 
 
        db=MySQLdb.connect(host="localhost",use_unicode="True",charset="utf8",user="root",passwd="root",db="test")
        cursor=db.cursor()
 
        sql="""INSERT INTO example(id,name) VALUES("%s","%s")"""%(idis,newname)
 
 
        try:
 
 
            cursor.execute(sql)
 
            db.commit()
            print 'save ok'
        except:
 
            print 'no save'
            db.rollback()
 
    def OnQuit(self,e):
 
        self.Close()
 
 
 
 
 
 
 
 
class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, 'form1.py')
        frame.Show(True)
        self.SetTopWindow(frame)
        return True
 
app = MyApp(0)
app.MainLoop()
 
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Mysqldb και WXPYTHON ΠΡΟΒΛΗΜΑ 12 Χρόνια 9 Μήνες πριν #1655

  • STRATOS
  • Το Άβαταρ του/της STRATOS
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 34
  • Ληφθείσες Ευχαριστίες 5
Βρήκα την λύση και ήταν κατι εντελώς ηλίθιο για το οποίο έφαγα μισή μερα
Η λύση είναι η εξής



Χρησιμοποιήστε την wxpython unicode version


και ο κώδικας διαμορφώνεται έτσι:
import os
import math
import random
import wx
import MySQLdb 
import sys
APP_SIZE_X = 500
APP_SIZE_Y = 300
 
# -*- coding: utf-8 -*-
 
class MyFrame(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, size=(APP_SIZE_X, APP_SIZE_Y))
 
        panel = wx.Panel(self, -1,style=wx.SUNKEN_BORDER)
 
        wx.StaticText(panel, -1,'Name', (10, 55),style=wx.LEFT)
        self.name = wx.TextCtrl(panel, -1, '', (110, 55), (120, -1))
 
        save = wx.Button(panel, 1, 'Save', (70, 215),(130,-1))
        save.Bind(wx.EVT_BUTTON,self.OnSaveAsFile)
 
        quitbtn = wx.Button(panel, 1, 'Quit', (250, 215),(130,-1))
        quitbtn.Bind(wx.EVT_BUTTON,self.OnQuit)
 
 
        self.word=[]
    def OnSaveAsFile(self, event):
 
        idis="000"
        newname=self.name.GetValue()
 
        p=newname.encode("utf-8")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
        db=MySQLdb.connect(host="localhost",use_unicode="True",charset="utf8",user="root",passwd="root",db="test")
        cursor=db.cursor()
 
        sql="""INSERT INTO example(id,name) VALUES("%s","%s")"""%(idis,p)
 
 
        try:
 
 
            cursor.execute(sql)
 
            db.commit()
            print 'save ok'
        except:
 
            print 'no save'
            db.rollback()
 
    def OnQuit(self,e):
 
        self.Close()
 
 
 
 
 
 
 
 
class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, 'form1.py')
        frame.Show(True)
        self.SetTopWindow(frame)
        return True
 
app = MyApp(0)
app.MainLoop()
Τελευταία διόρθωση: 12 Χρόνια 9 Μήνες πριν από STRATOS.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": pmav99

Απ: Mysqldb και WXPYTHON ΠΡΟΒΛΗΜΑ 12 Χρόνια 8 Μήνες πριν #1656

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
off topic,

μιας και κάνεις desktop εφαρμογή, μήπως είναι καλύτερα/ευκολότερο να χρησιμοποιήσεις sqlite3 που είναι και στη standard library και να γλυτώσεις από ένα βαρύ dependency?
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Mysqldb και WXPYTHON ΠΡΟΒΛΗΜΑ 12 Χρόνια 8 Μήνες πριν #1657

  • STRATOS
  • Το Άβαταρ του/της STRATOS
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 34
  • Ληφθείσες Ευχαριστίες 5
Καλή η συμβουλή σου αλλά δεν γίνεται πρέπει να χρησιμοποιήσω mysql άς αφήσουμε τους λόγους γιατί και πώς, ήξερα όμως οτι θα μπλέξω.Αφου βρίσκω τις λύσεις οκ είμαι.
Τελευταία διόρθωση: 12 Χρόνια 8 Μήνες πριν από STRATOS.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.294 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

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