-1

我正在尝试使用 ODO、SQLite3 和 Python 将 csv 读入新数据库中的新表中。

我正在遵循这些指南:

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)

这会data.sqlitefile_path. 我可以在文件夹中看到它。

然后当我尝试将我的 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

你能帮我吗?

4

2 回答 2

0

不,感谢 ODO 文档,这成功地在新数据库中创建了一个新表,并将 csv 文件读入该数据库:

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()

[1] 中使用的来源:

https://docs.python.org/2/library/sqlite3.html python odo sql AssertionError: datashape must be Record type, got 0 * {...}

[2] 中使用的来源:

https://stackoverflow.com/a/41584832/2254228 http://sebastianraschka.com/Articles/2014_sqlite_in_python_tutorial.html#creating-a-new-sqlite-database https://stackoverflow.com/a/33316230/2254228 什么.sqlite 和 .db 文件有区别吗?

ODO 文档在这里(祝你好运......)https://media.readthedocs.org/pdf/odo/latest/odo.pdf

于 2017-08-03T13:39:04.810 回答
0

我发现文档网站和github中的文档不一样。请使用 github 版本作为参考。

NotImplementedError:无法将 uri 解析为数据资源

本节中提到了错误。

你可以通过使用解决

pip install odo[sqlite]或者 pip install odo[sqlalchemy]

那么如果你使用windows和odo 0.5.0你可能会遇到另一个错误:

AttributeError:'有向图对象没有属性'边缘'

安装 networkx 1.11 而不是 networkx 2.0 可以解决这个错误。(参考

pip uninstall networkx
pip install networkx==1.11

我希望这个能帮上忙

于 2017-10-19T05:58:10.247 回答