CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] SQLite changer un type REAL en INT

Exacompta
Exacompta
Niveau 10
10 juillet 2017 à 16:51:38

Bonjour tout le monde, j'ai une base de données SQLite3 avec 4 tables : overwatch, dixhuit_vingtcinq, moins_quinze, quinze_dixhuit. Elles ont toutes les 4 2 colonnes une nommée "datetime" (string) et une nommée "nb_co" (real) sauf que lorsque je souhaite voir ces données j'ai tout le temps un ".0" à la fin des différents résultats nb_co.

:d) Donc j'aurai voulu savoir si cela serait mieux d'avoir des INT à la place et donc de ne plus avoir de ".0" rien que sur Excel je peux pas vraiment faire de diagrammes à cause de ça. Et si oui, il y'aurait t'il une méthode "simple" de faire ça ? :hap:

:d) Et sinon pensez vous que je devrai revoir le format de "datetime" aussi ? Car il est sous forme "YYYY-MM-DD HH:MM:SS.MS" Et étant donné que je ne fais qu'une actualisation qu'environ toutes les minutes les secondes et les millisecondes ne me sont pas du tout utiles :hap: Et si oui, une idée d'une manière pas trop compliqué pour les enlever ? :hap:

:d) Enfin, je souhaite utiliser ces données pour faire des graphiques, statisques etc, devrais-je donc passer sous un autre type de base de données ? (MySQL, PostgreSQL, etc) ?

Merci d'avoir lu :o))

GrandeGuerre
GrandeGuerre
Niveau 11
10 juillet 2017 à 18:15:28

Bah en fait, comme son nom l'indique, un REAL c'est un nombre réel, donc à virgule. Vu que t'auras à priori jamais un nombre de connectés à virgule (sauf logique qui m'échappe :hap: ), oui il te faudrait utiliser un INT. :p)

Du coup ça implique de changer le type des colonnes si tu veux le faire proprement.

Pour les dates, c'est bizarre d'avoir un type string. Y'a pas un type DATETIME justement ? Après pour l'excès de précision c'est pas forcément très grave, je dirais. Ca doit pouvoir se résoudre depuis l’affichage d'Excel

Message édité le 10 juillet 2017 à 18:17:38 par GrandeGuerre
Exacompta
Exacompta
Niveau 10
10 juillet 2017 à 18:43:43

Le 10 juillet 2017 à 18:15:28 GrandeGuerre a écrit :
Bah en fait, comme son nom l'indique, un REAL c'est un nombre réel, donc à virgule. Vu que t'auras à priori jamais un nombre de connectés à virgule (sauf logique qui m'échappe :hap: ), oui il te faudrait utiliser un INT. :p)

Du coup ça implique de changer le type des colonnes si tu veux le faire proprement.

Bin justement c'est ça que je demande en partie, je vois pas trop comment faire proprement :hap: De retirer toutes les entrées et les remettre dans une nouvelle table me parait laborieux :hap:

Pour les dates, c'est bizarre d'avoir un type string. Y'a pas un type DATETIME justement ? Après pour l'excès de précision c'est pas forcément très grave, je dirais. Ca doit pouvoir se résoudre depuis l’affichage d'Excel

Il n'y a pas de datetime dans les types de données :hap:

MrAnge
MrAnge
Niveau 10
10 juillet 2017 à 21:19:50

dans le doute fait un dump de ta BDD mais essaye cette instruction :

ALTER TABLE nom_table
MODIFY nom_colonne type_donnees

pour la premiere sa donnerais

ALTER TABLE overwatch
MODIFY nb_co int
Exacompta
Exacompta
Niveau 10
10 juillet 2017 à 22:39:33

Le 10 juillet 2017 à 21:19:50 MrAnge a écrit :
dans le doute fait un dump de ta BDD mais essaye cette instruction :

ALTER TABLE nom_table
MODIFY nom_colonne type_donnees

pour la premiere sa donnerais

ALTER TABLE overwatch
MODIFY nb_co int

Ca fonctionne pas :hap: D'après ce que j'ai vu il n'est pas possible de modifier une colonne finalement ( https://stackoverflow.com/questions/2685885/sqlite-modify-column ) . Du coup je vais devoir tout transvaser :hap: En même temps je pense passer vers un un autre type de base de données que SQLite 3 :hap: SI vous avez des propisitions hésitez pas, sinon j'irai sur PostgreSQL :hap:

AzazelBee
AzazelBee
Niveau 10
10 juillet 2017 à 23:34:25

Le 10 juillet 2017 à 22:39:33 Exacompta a écrit :

Le 10 juillet 2017 à 21:19:50 MrAnge a écrit :
dans le doute fait un dump de ta BDD mais essaye cette instruction :

ALTER TABLE nom_table
MODIFY nom_colonne type_donnees

pour la premiere sa donnerais

ALTER TABLE overwatch
MODIFY nb_co int

Ca fonctionne pas :hap: D'après ce que j'ai vu il n'est pas possible de modifier une colonne finalement ( https://stackoverflow.com/questions/2685885/sqlite-modify-column ) . Du coup je vais devoir tout transvaser :hap: En même temps je pense passer vers un un autre type de base de données que SQLite 3 :hap: SI vous avez des propisitions hésitez pas, sinon j'irai sur PostgreSQL :hap:

Si tu fais du relationnel MySQL-like (tourne plus vers MariaDB qui est plus performant) ou PostgreSQL.
Si tu va juste stocker une masse de donnée brute (des retours, score, logs, ...) sans relationnel, oriente toi vers du NoSQL :ok: (MongoDB peut-être, mais il n'y a pas que lui...)

Exacompta
Exacompta
Niveau 10
10 juillet 2017 à 23:59:05

Le 10 juillet 2017 à 23:34:25 AzazelBee a écrit :

Le 10 juillet 2017 à 22:39:33 Exacompta a écrit :

Le 10 juillet 2017 à 21:19:50 MrAnge a écrit :
dans le doute fait un dump de ta BDD mais essaye cette instruction :

ALTER TABLE nom_table
MODIFY nom_colonne type_donnees

pour la premiere sa donnerais

ALTER TABLE overwatch
MODIFY nb_co int

Ca fonctionne pas :hap: D'après ce que j'ai vu il n'est pas possible de modifier une colonne finalement ( https://stackoverflow.com/questions/2685885/sqlite-modify-column ) . Du coup je vais devoir tout transvaser :hap: En même temps je pense passer vers un un autre type de base de données que SQLite 3 :hap: SI vous avez des propisitions hésitez pas, sinon j'irai sur PostgreSQL :hap:

Si tu fais du relationnel MySQL-like (tourne plus vers MariaDB qui est plus performant) ou PostgreSQL.
Si tu va juste stocker une masse de donnée brute (des retours, score, logs, ...) sans relationnel, oriente toi vers du NoSQL :ok: (MongoDB peut-être, mais il n'y a pas que lui...)

Bin je sais pas, c'est juste pour stocker ces données (datetime et nb_co) et en faire des statistiques, graphiques :hap:

Message édité le 10 juillet 2017 à 23:59:53 par Exacompta
AzazelBee
AzazelBee
Niveau 10
11 juillet 2017 à 00:04:30

Alors, si il s'agit de faire une seule table remplit de datetime et de nb_co, je pense que le NoSQL du type de MongoDB serait plus adapté à cet usage, après à voir selon les facilités d'intégrations dans ton projet Python, ... Mais voilà, après tu peux également parfaitement faire ça en MySQL, ... :oui:

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment