Comment gérer le type datetime dans sqlite3 de python

Je vais vous montrer comment gérer le type datetime (pseudo) avec la bibliothèque python standard sqlite3.

Il n'y a pas de type de date (type datetime) dans SQLite3, Du côté Python, vous pouvez faire en sorte que SQLite se comporte comme s'il avait un type datetime.

Code pour le moment

Avec ce genre de sentiment

import sqlite3
import datetime

#Ouvrez la base de données. Activez la fonction de correspondance / fonction de conversion.
conn = sqlite3.connect(':memory:', 
detect_types=sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES)

# "TIMESTAMP"Utilisez la fonction de conversion comme pour "DATETIME"
sqlite3.dbapi2.converters['DATETIME'] = sqlite3.dbapi2.converters['TIMESTAMP']

#Génération de curseur
cur = conn.cursor()

#Créer une table avec une colonne nommée datetime
cur.execute("create table mytable(comment text, updated datetime);"

#Entrez respectivement la représentation sous forme de chaîne de caractères et la date / heure dans la colonne datetime.
cur.executemany("insert into mytable(comment, updated) value (?,?)",
        [["text_formated.", "2014-01-02 23:45:00"],
        ["datetime_class.", datetime.datetime(2014,3,4, 12,34,56)]])


ret = cur.execute("select * from mytable;")

for row in ret.fetchall():
  print "'%s'" % row[0], row[1], type(row[1])

##Comme ceci ↓, la colonne déclarée comme datetime renvoie le type datetime.
# text_formated. 2014-01-02 23:45:00 <type 'datetime.datetime'>
# datetime_class. 2014-03-04 12:34:56 <type 'datetime.datetime'>

Le type datetime apparaît uniquement lorsqu'il est visualisé à partir de Python, et le format de données réel stocké dans la base de données SQLite est "2014-01-02 23:45:00" ou "2014-03-04 12:34:56" Il ne s'agit que de ** données de chaîne de caractères **.

En fait, dans la bibliothèque standard python sqlite3 / dbapi2.py, une" fonction de conversion "qui change le nom de type SQL" timestamp "en datetime de Python est prédéfinie.

Comment ça fonctionne

Ce comportement de conversion automatique est activé en spécifiant detect_types = sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES lorsque vous effectuez sqlite3.connect ().

La liste des fonctions de conversion se trouve dans sqlite3.dbapi2.converters, donc Enregistrez la fonction de conversion pour le nom de type déjà enregistré TIMESTAMP comme pour DATETIME, commesqlite3.dbapi2.converters ['DATETIME'] = sqlite3.dbapi2.converters ['TIMESTAMP'] Faire.

Ce qui précède décrit uniquement datetime.datetime (AAAA, MM, JJ, hh, mm, ss) [Python] -> "AAAA-MM-JJ hh: mm: ss" [sqlite3]. Alors, où est le modèle inversé de "AAAA-MM-JJ hh: mm: ss" [sqlite3] -> datetime.datetime (AAAA, MM, JJ, hh, mm, ss) [Python]? Je vais omettre l'histoire. En gros, la "fonction adaptateur" qui est entrée comme chaîne de caractères dans SQLite lorsque datetime est lancée est prédéfinie dans sqlite3 / dbapi2.py.

Pour plus d'informations, lisez 11.13.5.4. Fonctions d'ajustement et de conversion par défaut --SQLite dans la référence de la bibliothèque standard Python. est.

Recommended Posts

Comment gérer le type datetime dans sqlite3 de python
Comment utiliser SQLite en Python
Comment gérer le japonais avec Python
Comment développer en Python
Comment gérer JSON en Ruby, Python, JavaScript, PHP
[Python] Comment faire PCA avec Python
Comment gérer une session dans SQLAlchemy
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Sqlite en Python
Comment définir dynamiquement des variables en Python
Comment faire R chartr () en Python
[Itertools.permutations] Comment créer une séquence en Python
Comment utiliser BigQuery en Python
Comment obtenir stacktrace en python
Comment afficher la table quatre-vingt-dix-neuf en python
Comment extraire une zone de polygone en Python
Comment vérifier la version d'opencv avec python
Comment gérer des valeurs consécutives dans MySQL
Comment changer de version de Python dans cloud9
Comment régler le contraste de l'image en Python
Comment utiliser __slots__ dans la classe Python
Comment remplir dynamiquement des zéros avec Python
Comment afficher Hello World en python
Comment utiliser is et == en Python
Comment écrire Ruby to_s en Python
Spécification du fuseau horaire lors de la conversion d'une chaîne de caractères en type datetime avec python
Comment utiliser la bibliothèque C en Python
Comment recevoir des arguments de ligne de commande en Python
[Python] Comment utiliser deux types de type ()
Comment effacer un taple dans une liste (Python)
Comment incorporer des variables dans des chaînes python
Résumé de la façon d'importer des fichiers dans Python 3
Comment simplifier l'ajustement polymorphe restreint en python
Comment utiliser la bibliothèque d'images Python dans la série python3
Comment implémenter la mémoire partagée en Python (mmap.mmap)
Comment créer un fichier JSON en Python
Comment installer python
Résumé de l'utilisation de MNIST avec Python
[Introduction à Python] Comment gérer les données au format JSON
Comment spécifier la version TLS dans les requêtes python
Comment bien gérer les commandes Linux à partir de Python
Utilisez un module de cryptographie qui gère OpenSSL en Python
Comment notifier les canaux Discord en Python
Comment obtenir des éléments de type dictionnaire de Python 2.7
Comment obtenir les fichiers dans le dossier [Python]
Comment utiliser tkinter avec python dans pyenv
Comment exécuter LeapMotion avec Python non-Apple
[Python] Comment dessiner un histogramme avec Matplotlib
Comment générer "Ketsumaimo" en standard en Python
[Python] Comment gérer les caractères japonais avec openCV
Comment apporter des modifications à l'interpréteur Python dans Pycharm
[Python] Comment comparer la date / heure avec le fuseau horaire ajouté
Comment tracer l'autocorrélation et l'autocorrélation partielle avec Python
Comment supprimer les éléments en double dans la liste Python 3
20e Comment écrire des problèmes en temps réel hors ligne en Python