2017-07-27 3 views
0

J'essaie de comprendre pourquoi le schéma d'une table supprimée est retourné lorsque j'essaie de créer une table en utilisant un ensemble différent de noms de colonnes ?SQLite Python Blaze - Essayer de créer une table après avoir déposé une table de même nom retourne l'ancien schéma

Après avoir déposé la table, je peux confirmer dans un explorateur SQLite que la table a disparu. Une fois que vous essayez de charger le nouveau fichier via ODO, il renvoie une erreur "Les noms de colonnes des données entrantes ne correspondent pas aux noms de colonnes des noms de tables SQL existants dans la table SQL". Ensuite, je peux voir la même table est recréée dans la base de données, en utilisant le schéma précédemment abandonné! J'ai tenté une instruction VACUUM après avoir laissé tomber la table mais toujours le même problème.

Je peux créer la table bien en utilisant un nom de table différent, cependant totalement confus quant à pourquoi je ne peux pas utiliser le nom de table précédemment abandonné que je veux utiliser?

import sqlite3 
import pandas as pd 
from odo import odo, discover, resource, dshape 

conn = sqlite3.connect(dbfile) 
c = conn.cursor() 

c.execute("DROP TABLE <table1>") 
c.execute("VACUUM") 

importfile = pd.read_csv(csvfile) 

odo(importfile,'sqlite:///<db_path>::<table1'>) 

ValueError: Column names of incoming data don't match column names of existing SQL table Names in SQL table: 

Répondre

1
import sqlite3 
import pandas as pd 
from odo import odo, discover, resource, dshape 

conn = sqlite3.connect('test.db') 
cursor = conn.cursor(); 
table = """ CREATE TABLE IF NOT EXISTS TABLE1 (
             id integer PRIMARY KEY, 
             name text NOT NULL 
            ); """; 
cursor.execute(table); 

conn.commit(); # Save table into database. 

cursor.execute(''' DROP TABLE TABLE1 '''); 
conn.commit(); # Save that table has been dropped. 

cursor.execute(table); 
conn.commit(); # Save that table has been created. 
conn.close(); 
+0

Eh oui, ne pas oublier de valider les modifications aurait été utile! – user3867061

+0

malheureusement j'ai coché cela comme la réponse trop rapidement. En fait, je rencontre toujours le même problème même avec conn.commit() – user3867061