Insertion MySQL

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

silver-slider
Messages : 20
Enregistré le : dim. 17 avr. 2016 20:56

Insertion MySQL

Message par silver-slider » dim. 17 avr. 2016 21:22

Bonjour,

Je viens vers vous pour un petit coup de main, je débute en Python et franchement je patauge un peu, j'ai passé l'après midi a essayer de comprendre mais là je crac il me faut les lumieres de gens compétents ;)

Donc l'idée est simple, ayant installer Raspisms j'aimerai remplir les champs d'une table (scheduleds) pour pas la nommer par le biais d'un script python, le problème c'est que lorsque j'essaie d'insérer une variable datetime j'obtiens une erreur en retour "Warning: Out of range value for column 'at' at row 1" elle rentre pas... elle rentre pas ... pourtant quand au lieu de ma variable 'nowplus' je mets la date et heure en dur format '2016-07-05 19:54:32' , ca passe :evil: ... je me suis cassé la tête a essayer de présenter la variable sous tous les formats possibles et inimaginables, mais rien ne passe...

voici la structure de la table
CREATE TABLE IF NOT EXISTS scheduleds
(
id INT NOT NULL AUTO_INCREMENT,
at DATETIME NOT NULL,
content VARCHAR(1000) NOT NULL,
flash BOOLEAN NOT NULL DEFAULT 0,
progress BOOLEAN NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
et voici mon bout de code:

Code : Tout sélectionner

import MySQLdb
import time
import datetime

# heure réelle
now = datetime.datetime.now()

# ajout d'une minute sur l'heure réelle
nowplusminute = now + datetime.timedelta(minutes = 1)

# préparation de la variable au bon format
nowplus = nowplusminute.strftime("%Y-%m-%d %H:%M:%S")

#verification visuelle du bon format
print nowplus

db = MySQLdb.connect(host="localhost", user="root", passwd="*********", db="raspisms")
cur = db.cursor()

# insertion dans la base
query = "INSERT INTO scheduleds (at, content, progress) VALUES ('nowplus','nouveau message','0')"  
cur.execute(query)

db.commit()
cur.close()
db.close ()
Au secour Framboise kenobi vous etes mon seul espoir !!! :mrgreen:
Et puis on se moque pas de mon "bricolage".... d'avance merci lol

mike913
Raspinaute
Messages : 246
Enregistré le : mar. 7 oct. 2014 09:46
Localisation : Morsang / Orge - Essonne
Contact :

Re: Insertion MySQL

Message par mike913 » lun. 18 avr. 2016 11:30

Bonjour

la ligne:

Code : Tout sélectionner

# insertion dans la base
query = "INSERT INTO scheduleds (at, content, progress) VALUES ('nowplus','nouveau message','0')" 
contient une erreur car tu essaye d'insérer la chaine de caractère 'nowplus' et non la variable nowplus il faut écrire:

Code : Tout sélectionner

# insertion dans la base
query = "INSERT INTO scheduleds (at, content, progress) VALUES (nowplus,'nouveau message','0')"
DS712+ 2x Western Digital WD10EADS-00L 1000 GB (SHR) - Firmware: DSM 6.1.6-15266
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.net

silver-slider
Messages : 20
Enregistré le : dim. 17 avr. 2016 20:56

Re: Insertion MySQL

Message par silver-slider » lun. 18 avr. 2016 21:55

Slt Mike,

Merci!!!!!
c'etait effectivement la bonne piste, j'ai refait des modifs car il y avait d'autres coquilles entre les mélange de syntaxe de la vers 2.* et 3.*... c'est vraiment une plaie ces deux versions différentes :(

En tout cas merci du coup de main, je pense que je repasserai par là car je suis loin d'avoir fini ce que je désir obtenir ;)

bruno83
Messages : 72
Enregistré le : lun. 11 mai 2015 13:29

Re: Insertion MySQL

Message par bruno83 » mar. 19 avr. 2016 11:07

juste un truc, en début on ne sait pas la version de python utilisée:
#!/usr/bin/env python3
# -*- coding:UTF-8 -*-
a+bruno

silver-slider
Messages : 20
Enregistré le : dim. 17 avr. 2016 20:56

Re: Insertion MySQL

Message par silver-slider » mar. 19 avr. 2016 14:29

Merci, C'est fait Bruno dans la version qui fonctionne.. ;)
Par contre je suis en train d'essayer de faire marcher la même chose sous python 3 et là c'est la grosse galère, entre pymysql, mysql-connector, sqlalchemy je suis en train de tomber en dépression....

c'est hallucinant la complexité de tous ces modules, pas forcement compatibles, pas forcement activés, je me tape des "unable to locate package" a chaque fois que j'essai d'installer quelque chose...

donc je profite de ce post pour vous poser 2 questions ( pour l'instant) sur python 3:

1) concernant les accès a Mysql sur quel connecteur dois-je partir pymysql ou autre ?

2) quand j'installe le module depuis pi@raspberrypi:~ $ , est il pris en charge par l'environnement python3 ? car actuellement quand je tente d'installer pymysql ca me dit qu'il est déjà présent... mais quand je demande son import dans mon script exécuté depuis l'env python3 il me dit qu'il ne l'est pas ..

Désolé de poser ces questions qui paraissent sans doute idiotes pour des utilisateurs avertis, mais quand tu ne sais pas dans quelle direction aller et bien tu tourne en rond, c'est ce que je fais depuis ce matin :?

Avatar du membre
Manfraid
Modérateur
Messages : 1402
Enregistré le : ven. 3 oct. 2014 14:50
Contact :

Re: Insertion MySQL

Message par Manfraid » mar. 19 avr. 2016 14:31

Salut, je te conseille l'excellent ORM peewee qui te permet de t'affranchir de plein de chose et ce module et compatible python2 et python3
NAS : DIY OS Debian: DD250Go + 3x2To + 6To
Raspberry pi : 2B OS : Raspbian
Se tromper est humain, Vraiment foutre la merde nécessite le mot de passe de root.

bruno83
Messages : 72
Enregistré le : lun. 11 mai 2015 13:29

Re: Insertion MySQL

Message par bruno83 » mar. 19 avr. 2016 16:30

bonjour,
en python 3 galère pour le mysql voici une piste que je n'ai pas testé (je n'ai pas tester une gestion de base de donnée mysql car j'ai utilisé sqlite3) en python3 :
voir post plus bas
A+bruno
Modifié en dernier par bruno83 le mar. 19 avr. 2016 18:45, modifié 1 fois.

silver-slider
Messages : 20
Enregistré le : dim. 17 avr. 2016 20:56

Re: Insertion MySQL

Message par silver-slider » mar. 19 avr. 2016 16:52

Merci a vous !!
je vais regarder ces deux pistes..

oui dommage que Raspisms tourne par défaut sur Mysql.. ca pas l'air d'être la solution la plus aisé :?

bruno83
Messages : 72
Enregistré le : lun. 11 mai 2015 13:29

Re: Insertion MySQL

Message par bruno83 » mar. 19 avr. 2016 17:33

bonjour,
je viens de tester une solution qui marche
https://github.com/davispuh/MySQL-for-P ... l-on-Linux

sudo pip3 install git+git://github.com/davispuh/MySQL-for-Python-3
voici mon fichier j'ai créer un utilisateur eleve mot passe 1234
sous phpmyadmin
ça fonctionne nikel ;)
Fichiers joints

[L’extension py a été désactivée et ne peut plus être affichée.]


silver-slider
Messages : 20
Enregistré le : dim. 17 avr. 2016 20:56

Re: Insertion MySQL

Message par silver-slider » mar. 19 avr. 2016 18:22

j'ai commencé par la sujestion de Bruno..
Download distribute_setup.py from python-distribute.org/distribute_setup.py‎ to upgrade setuptools.

Execute the following command to upgrade setuptools for your local python3:

python.exe distribute_setup.py

Download and install the pymysql driver:

curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-0.6 | tar xz
cd PyMySQL-PyMySQL-7c86923/
sudo python3 setup.py install

Download and install MySQLdb driver for python3

git clone https://github.com/davispuh/MySQL-for-Python-3.git
cd MySQL-for-Python-3/
python3 setup.py install
ca marche bien jusqu'a la dernière ligne "python3 setup.py install" parce qu'après il m'aboie dessus :
(env) pi@raspberrypi:~/MySQL-for-Python-3 $ python3 setup.py install
/bin/sh: 1: mysql_config: not found
Traceback (most recent call last):
File "setup.py", line 15, in <module>
metadata, options = get_config()
File "/home/pi/MySQL-for-Python-3/setup_posix.py", line 43, in get_config
libs = mysql_config("libs_r")
File "/home/pi/MySQL-for-Python-3/setup_posix.py", line 25, in mysql_config
raise EnvironmentError("{} not found".format(mysql_config.path))
OSError: mysql_config not found
Je ne suis pas du genre a lacher l'affaire mais là, une journée pour essayer de passer un instruction SQL, ca commence a faire bcp :(

EDIT: je vais essayer ca Bruno merci ( en même temps on a surement pas les mêmes compétences :roll: :lol: )

Répondre

Retourner vers « Python »