Ver Mensaje Individual
  #9 (permalink)  
Antiguo 21/06/2012, 12:02
Onsterion
 
Fecha de Ingreso: octubre-2010
Mensajes: 73
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Python 2.7 + PyQt4 - Pasar HTML a tabla SQL

Cita:
Iniciado por razpeitia Ver Mensaje
Ya hablamos del parametrizado de queries, por que sigues concatenando los valores al query. Eso habla muy mal como programador de ti.

Ademas si no te lo inserta es lo mismo, por que concatenas los valores.
Soy re mal programador posta.

Te pregunte a que le llamabas parametrizar y seguis sin responder. Si sos tan capo master programador, explicalo y punto

Bueno encontre la vuelta por otro lado ya que por ahora todos los posts que hice tu ayuda de poco y nada útil, quizas a alguien le sirva.

Para insertarlo, use el modulo CGI y lo modifique en la linea 1031

Código:
def escape(s, quote=None):
    '''Replace special characters "&", "<" and ">" to HTML-safe sequences.
    If the optional flag quote is true, the quotation mark character (")
    is also translated.'''
    s = s.replace("&", "&amp;") # Must be done first!
    s = s.replace("<", "&lt;")
    s = s.replace(">", "&gt;")
    s = s.replace('"', "&quot;")
    s = s.replace("'", "&apos;")
    if quote:
        s = s.replace('"', "&quot;")
    return s
Y agrege otra función:

Código:
def enco_escape(s, quote=None):
    '''Replace special characters "&", "<" and ">" to HTML-safe sequences.
    If the optional flag quote is true, the quotation mark character (")
    is also translated.'''
    s = s.replace("&amp;", "&") # Must be done first!
    s = s.replace("&lt;", "<")
    s = s.replace("&gt;", ">")
    s = s.replace("&quot;", '"')
    s = s.replace("&apos;", "'")
    if quote:
        s = s.replace('"', "&quot;")
    return s
Luego para insertar:

Código:
    def modificar_anotacion(self):

        self.main_program.data_base.open()
        
        self.main_program.anotacion_pasar_texto_para_modificar =  self.main_program.textEdit_ver_anotaction.toHtml()
        
        self.main_program.anotacion_pasar_texto_para_modificar_a_string =  cgi.escape (self.main_program.anotacion_pasar_texto_para_modificar)
        
        try:
            self.main_program.anotacion_modificar.exec_("UPDATE os_anotaciones SET texto='" " " + str  (self.main_program.anotacion_pasar_texto_para_modificar_a_string) +" " "' WHERE nombre = '"+ str (self.main_program.combo_box_texto_seleccionado) +"'")
        except:
            print "Error"
Y para traer:

Código:
    def traer_anotacion(self):
        self.main_program.data_base.open()
        
        self.main_program.combo_box_texto_seleccionado = self.main_program.comboBox_anotaciones.currentText()
        print self.main_program.combo_box_texto_seleccionado
        
        self.main_program.mostrar_la_anotacion = QtSql.QSqlQuery()
        self.main_program.mostrar_la_anotacion.exec_("SELECT texto FROM os_anotaciones where nombre='"+ str (self.main_program.combo_box_texto_seleccionado)+"'")
        print (self.main_program.mostrar_la_anotacion.numRowsAffected())
        
        #Traigo el resultado del query para imprimir
        while(self.main_program.mostrar_la_anotacion.next()):
            self.main_program.resultado_del_query_al_linedit = str (self.main_program.mostrar_la_anotacion.value(0).toString())
            self.main_program.resultado_del_query_al_linedit = cgi.enco_escape (self.main_program.resultado_del_query_al_linedit)
            self.main_program.textEdit_ver_anotaction.setText(self.main_program.resultado_del_query_al_linedit)

O más sencillo y manual:

Código:
self.main_program.anotacion_pasar_texto_para_modificar_a_string = self.main_program.anotacion_pasar_texto_para_modificar_a_string.replace(">", "&gt;")

Espero que a alguien más le sirva.




Saludos.-
__________________
Página Principal: http://www.almightysystem.com.ar/

Última edición por razpeitia; 21/06/2012 a las 20:43 Razón: "sencillo" es con "c"