2016-06-16 1 views
0

Voici un exemple simplifié de code que je veux courir sous BOLT et que j'ai pu exécuter uner py2neoen utilisant le type datetime python dans BOLT neo4j-driver renvoie une erreur. solution de contournement disponible?

timeCreated = datetime.datetime(year=2016, month=6, day=15, hour=23) 
driver = GraphDatabase.driver("bolt://localhost", auth=basic_auth("neo4j", "password")) 
session = driver.session() 
stmt = 'CREATE (y:Year) SET y.timeCreated = {time}' 
session.run(stmt, {"time": timeCreated}) 

timeCreated est objet datetime python. Je reçois un message d'erreur indiquant qu'un objet datetime ne peut pas être utilisé:

ValueError: Values of type <class 'datetime.datetime'> are not supported). 

Existe-t-il une solution de contournement pour cela? Sera-t-il soutenu à l'avenir? Je voudrais utiliser le pilote BOLT et réduire la dépendance sur py2Neo mais il semble que toutes les fonctionnalités ne peuvent pas encore être transférées.

+0

Node4j n'a aucun concept de dates ou d'heures en tant que propriétés d'objets; donc je doute qu'il y aura un support pour les objets 'datetime'. –

Répondre

2

Neo4j ne supporte pas nativement datetimes, et je crois py2neo converti en silence datetimes en chaînes dans les versions précédentes.

Ma solution de contournement a été d'appeler la méthode .isoformat() sur datetime objets pour les insérer dans des bases de données en tant que chaînes.

+0

cela a résolu le problème. Je préfère cette solution à l'époque car elle montre encore le caractère temporel. l'époque est juste un nombre –

0

Node4j n'a aucun concept de dates ou d'heures en tant que propriétés d'objets; donc je doute qu'il y ait un support pour le type datetime. Vous devez stocker la valeur époque à la place:

import calendar 
import time 

epoch = calendar.timegm(time.gmtime())