Topic: Inserimento dati in campo text mysql  (Letto 77 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline formicheedintorni

  • python unicellularis
  • *
  • Post: 4
  • Punti reputazione: 0
    • Mostra profilo
Inserimento dati in campo text mysql
« il: Aprile 28, 2020, 16:56 »
Ciao a tutti!
Ho cominciato ad utilizzare python con flask per lo sviluppo di un piccolo server api.
Sto riscontrando un problema strano e rognoso: finchè inserisco in db dati di tipo numerico o varchar tutto ok, quando tento di inserire dati (es la stringa in formato json proveniente in post) in un campo text va in errore, perchè?
Ho cercato tanto su internet ma non sono riuscita a trovare una soluzione, qualcuno mi può aiutare?
Grazie!

Mic

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.020
  • Punti reputazione: 9
    • Mostra profilo
Re:Inserimento dati in campo text mysql
« Risposta #1 il: Aprile 28, 2020, 18:55 »
Se faccio bene i conti, potrebbe essere per circa un milione di motivi, non è che possiamo divinare più di tanto dalle informazioni che ci dai (nessuna).
Peraltro, tieni conto che mysql ha in effetti un tipo json.

Offline formicheedintorni

  • python unicellularis
  • *
  • Post: 4
  • Punti reputazione: 0
    • Mostra profilo
Re:Inserimento dati in campo text mysql
« Risposta #2 il: Aprile 28, 2020, 19:01 »
Ricevo un json via post, lo "catturo" con parser.parser.parse_args() e sto cercando di inserirlo in un campo definito text in mysql...l'inserimento non avviene, dà errore di conversione

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.020
  • Punti reputazione: 9
    • Mostra profilo
Re:Inserimento dati in campo text mysql
« Risposta #3 il: Aprile 28, 2020, 19:16 »
magari perché parser.parser.parse_args, a giudicare da quanti "parse" ci sono in quel nome, sta... PARSANDO quel json (non so, eh... tiro a indovinare) e dall'altro capo non ti restituisce una stringa, ma un oggetto Python (un dizionario, probabilmente). E se pensi di rificcarlo dentro a un database tal quale, beh non mi aspetto che funzioni. Controlla il tipo di quell'oggetto che ti trovi in mano, e al limite riconvertilo in una stringa prima spedirlo al db.

Comunque ripeto, mysql ha un tipo json.

Offline formicheedintorni

  • python unicellularis
  • *
  • Post: 4
  • Punti reputazione: 0
    • Mostra profilo
Re:Inserimento dati in campo text mysql
« Risposta #4 il: Aprile 29, 2020, 08:30 »
Se faccio un return subito dopo il parse mi restituisce la stringa corretta in shell, quello che mi dà problemi è proprio l'inserimento di un dato anche semplicemente stringa in un campo mysql definito text: se definisco il campo mysql varchar non dà alcun problema, se lo definisco text o dà errore o il campo risulta null ma inserisce il resto della query

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.020
  • Punti reputazione: 9
    • Mostra profilo
Re:Inserimento dati in campo text mysql
« Risposta #5 il: Aprile 29, 2020, 09:30 »
Beh sai, ciò che vedi nella shell è una stringa per forza, altrimenti non la vedresti. Ti ho detto, controlla il tipo del dato che immetti nel database prima di immetterlo. Fare "return" e vederlo nella shell non significa nulla.
Ma ammettendo che una funzione che si chiama parse.parse.parse.parse.parse.parse...parse.....parse effettivamente NON faccia il parsing (siamo un po' nel campo dello strano ma vero) e quindi tu abbia davvero una stringa in mano, l'idea che non si possa inserire una stringa Python in un campo text mi sembra un po'... irrealistica. Non uso Mysql (diocenescampieliberi) e non posso fare nessuna prova. Ma ti consiglierei *calorosamente* di sospendere tutto quello che stai facendo, cd in un'altra directory, e scrivere dieci righe di codice che creano un database mysql nuovo, da zero, fanno una tabella con una colonna text, e ci mettono dentro la stringa "hello world". Se questo fallisce, posta il codice (non più di dieci righe) e vediamo se capiamo che cosa non va.