0

我试图弄清楚为什么当我尝试使用一组不同的列名创建表时,删除的表的架构会返回?

删除表后,我可以在 SQLite 资源管理器中确认该表已消失。一旦尝试通过 ODO 加载新文件,它就会返回错误“传入数据的列名与 SQL 表中现有 SQL 表名的列名不匹配”。然后我可以看到使用先前删除的模式在数据库中重新创建了同一个表!我在删除表后尝试了一个 VACUUM 语句,但仍然是同样的问题。

我可以使用不同的表名很好地创建表,但是对于为什么我不能使用我想使用的先前删除的表名完全困惑?

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:
4

1 回答 1

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();
于 2017-07-27T10:29:04.487 回答