2017-08-03 171 views
0

我想在使用ODO,SQLite3和Python的新數據庫中將csv讀入新表中。將csv讀入數據庫SQLite3 ODO Python

我下面這些指南:

https://media.readthedocs.org/pdf/odo/latest/odo.pdf http://odo.pydata.org/en/latest/perf.html?highlight=sqlite#csv-sqlite3-57m-31s

我嘗試以下操作:

import sqlite3 
import csv 
from odo import odo 

file_path = 'my_path/' 
# In this case 'my_path/' is a substitute for my real path 

db_name = 'data.sqlite' 

conn = sqlite3.connect(file_path + db_name) 

這就造成內file_path一個新的SQLite文件data.sqlite。我可以在文件夾中看到它。

當我再嘗試讀我的CSV到這個數據庫中,我得到以下錯誤:

csv_path = 'my_path/data.csv' 
odo(csv_path, file_path + db_name) 
conn.close() 

NotImplementedError: Unable to parse uri to data resource: # lists my path 

你能幫忙嗎?

+0

「這將創建一個新的SQLite文件data.sqlite FILE_PATH內」:是嗎? file_path + db_name的值只是字符串「my_pathdata.sqlite」,因爲你沒有把分隔符 – WNG

+0

@WNG道歉,更正了。 – Chuck

回答

0

沒有感謝ODO文檔,這成功地在一個新的數據庫中創建一個新表,並在csv文件到該數據庫中讀取:

https://docs.python.org/2/library/sqlite3.html:[1]用

import sqlite3 
import csv 
from odo import odo 

# [1] 

# Specify file path 
file_path = 'my_path/' 
# In this case 'my_path/' is a substitute for my real path 

# Specify csv file path and name 
csv_path = file_path + 'data.csv' 

# Specify database name 
db_name = 'data.sqlite' 

# Connect to new database 
conn = sqlite3.connect(file_path + db_name) 

# [2] 

# Use Odo to detect the shape and datatype of your csv: 
data_shape = discover(resource(csv_path)) 

# Ready in csv to new table called 'data' within database 'data.sqlite' 
odo(pd.read_csv(csv_path), 'sqlite:///' + file_path + 'data.sqlite::data', dshape=data_shape) 

# Close database 
conn.close() 

來源

https://stackoverflow.com/a/41584832/2254228python odo sql AssertionError: datashape must be Record type, got 0 * {...}

源頭在[2]中使用http://sebastianraschka.com/Articles/2014_sqlite_in_python_tutorial.html#creating-a-new-sqlite-database https://stackoverflow.com/a/33316230/2254228 what is difference between .sqlite and .db file?

的ODO文件是在這裏(好運氣......)https://media.readthedocs.org/pdf/odo/latest/odo.pdf

0

我發現在文檔網站和GitHub上的文件是不同的。請使用github版本作爲參考。

NotImplementedError: Unable to parse uri to data resource

誤差在此section被提及。

您可以通過使用

pip install odo[sqlite]pip install odo[sqlalchemy]

然後如果你使用Windows,你可能會遇到其他錯誤解決和小戶0.5.0:

AttributeError: 'DiGraph object has no attribute 'edge'

安裝networkx 1.11代替networkx的2.0可以解決這個錯誤。 (reference

pip uninstall networkx 
pip install networkx==1.11 

我希望這將有助於