pandas.read_csv: OperationalError: Tabelle hat keine Spalte mit dem Namen 1
Ich versuche, eine csv zu einem SQLLite Tabelle auf Fenster laden mit:
Die SQLLite Tabelle und csv die gleichen Feldnamen haben und beginnen mit:
CREATE TABLE test2 (
id INTEGER NOT NULL,
"case" TEXT,
......
PRIMARY KEY (id),
UNIQUE ("case")
)
ich die folgende Klasse haben:
class Sqllite_utilities(object):
def __init__(self, db_path, table_name):
self.db_path = db_path
self.table_name = table_name
def upload_csv_to_table(self, path_to_csvfile):
conn = sqlite3.connect(self.db_path)
df = pandas.read_csv(path_to_csvfile)
df.to_sql(self.table_name, conn, if_exists='append', index_label='id')
an der Befehlszeile:
s = Sqllite_utilities(settings.SETTINGS_PATH+"\\data.db",'test2')
In[3]: s.upload_csv_to_table('C:\Users\ne\Desktop\jtest.csv')
C:\lib\site-packages\pandas\core\generic.py:1201: UserWarning: The spaces in these column names will not be changed. In pandas versions < 0.14, spaces were converted to underscores.
chunksize=chunksize, dtype=dtype)
Traceback (most recent call last):
File "C:\lib\site-packages\IPython\core\interactiveshell.py", line 2885, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-3-b530f5199977>", line 1, in <module>
s.upload_csv_to_table('C:\Users\dnir\Desktop\jtest.csv')
File "F:\ENVS\r2\j1\utilities.py", line 41, in upload_csv_to_table
df.to_sql(self.table_name, conn, if_exists='append', index_label='id')
File "C:\lib\site-packages\pandas\core\generic.py", line 1201, in to_sql
chunksize=chunksize, dtype=dtype)
File "C:\lib\site-packages\pandas\io\sql.py", line 470, in to_sql
chunksize=chunksize, dtype=dtype)
File "C:\lib\site-packages\pandas\io\sql.py", line 1503, in to_sql
table.insert(chunksize)
File "C:\lib\site-packages\pandas\io\sql.py", line 664, in insert
self._execute_insert(conn, keys, chunk_iter)
File "C:\lib\site-packages\pandas\io\sql.py", line 1291, in _execute_insert
conn.executemany(self.insert_statement(), data_list)
OperationalError: table test2 has no column named 1
Was mache ich falsch?
edit: Ich glaube, du hast es, ich bin ein neuer Fehler bekommen, und ich werde in die seperat aussehen:
df.to_sql(self.table_name, conn, if_exists='append', index_label='id')
File "C:\lib\site-packages\pandas\core\generic.py", line 1201, in to_sql
chunksize=chunksize, dtype=dtype)
File "C:\lib\site-packages\pandas\io\sql.py", line 470, in to_sql
chunksize=chunksize, dtype=dtype)
File "C:\lib\site-packages\pandas\io\sql.py", line 1503, in to_sql
table.insert(chunksize)
File "C:\lib\site-packages\pandas\io\sql.py", line 642, in insert
keys, data_list = self.insert_data()
File "C:\lib\site-packages\pandas\io\sql.py", line 609, in insert_data
"duplicate name in index/columns: {0}".format(err))
ValueError: duplicate name in index/columns: cannot insert id, already exists
existiert die Tabelle bereits, ohne diesen Spaltennamen? – jeremycg
Ja die Tabelle existiert und hat keine Spalte mit dem Namen '1' – user61629
, dann müssen Ihre Pandas Dataframe Spalten die db Spaltennamen – jeremycg