2016-09-21 1 views
0

Je demande un json sur un site Web pour les données, puis en enregistrant ces données dans une variable afin que je puisse le mettre dans une table sqlite. Je suis 2 sur 3 pour ce que j'essaie de faire, mais le côté sqlite est juste mystifiant. Je peux demander les données, à partir de là je peux vérifier que la variable a des données quand je la teste avec une impression, mais tous mes trucs sqlite échouent. Ce n'est même pas créer une table, encore moins mettre à jour la table (mais il imprime tous les résultats dans la mémoire tampon pour une raison quelconque) N'importe quelle idée de ce que je fais mal ici? Disclaimer: Bit d'un noob python. J'ai des tables de test créé avec succès tout simplement copier les choses hors du python sqlite docinsertion de données variables python dans la table sqlite ne pas enregistrer

# this is requesting the data and seems to work 
for ticket in zenpy.search("bananas"): 
id = ticket.id 
subj = ticket.subject 
created = ticket.created_at 
for comment in zenpy.tickets.comments(ticket.id): 
    body = comment.body 

# connecting to sqlite db that exists. things seem to go awry here 
conn = sqlite3.connect('example.db') 
c = conn.cursor() 

# Creating the table table (for some reason table is not being created at all) 
c.execute('''CREATE TABLE tickets_test 
     (ticket id, ticket subject, creation date, body text)''') 

# Inserting the variables into the sqlite table 
c.execute("INSERT INTO ticketstest VALUES (id, subj, created, body)") 

# committing changes the changes and closing 
c.commit() 
c.close() 

Je suis sur Windows 64 bits et en utilisant PyCharm pour ce faire.

Répondre

0

Votre tableau n'est probablement pas créé car vous ne vous êtes pas encore engagés et votre SQL échoue avant qu'il ne soit validé. Cela devrait fonctionner lorsque vous corrigerez votre 2ème instruction sql.

Vous n'insérez pas les variables que vous avez créées dans la table. Vous devez utiliser des paramètres. Il y a two ways of parameterizing your sql statement. Je vais montrer les espaces réservés nommés un:

c.execute("INSERT INTO ticketstest VALUES (:id, :subj, :created, :body)", 
    {'id':id, 'subj':subj, 'created':created, 'body':body} 
)