【问题标题】:Read csv into database SQLite3 ODO Python将 csv 读入数据库 SQLite3 ODO Python
【发布时间】:2017-08-03 12:57:23
【问题描述】:

我正在尝试使用 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)

这会在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

你能帮忙吗?

【问题讨论】:

    标签: python csv sqlite odo


    【解决方案1】:

    不感谢 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 what is difference between .sqlite and .db file?

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

    【讨论】:

      【解决方案2】:

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

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

      section 中提到了错误。

      你可以通过使用来解决

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

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

      AttributeError: 'DiGraph 对象没有属性'edge'

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

      pip uninstall networkx
      pip install networkx==1.11
      

      我希望这会有所帮助

      【讨论】:

        猜你喜欢
        • 2013-09-20
        • 2011-02-22
        • 2017-04-03
        • 2017-07-17
        • 2013-09-08
        • 2019-07-13
        • 2016-03-27
        • 2012-12-01
        • 1970-01-01
        相关资源
        最近更新 更多