使用Python上的odo函数将'NA'作为字符串插入到SQLite表中

时间:2017-02-24 23:15:50

标签: python csv sqlite odo

以CSV格式考虑以下文件(stock_prices.csv):

Symbol,Price
RY,96.61
NA,58.69
BNS,80.35

在Python中使用 odo 函数将CSV文件插入到SQLite数据库表中时,NA自动收报机似乎插入为无值。

from odo import odo, dshape

input_csv = 'stock_prices.csv'
output_sqlite = 'sqlite:///stocks.db::stock_prices'
ds = dshape('var * {Symbol: string, Price: float64}')

odo(input_csv, output_sqlite, dshape=ds)

以下是我用来查询SQLite数据库的代码。

DB_PATH = 'stocks.db'
cn = sqlite3.connect(DB_PATH)
c = cn.cursor()
c.execute("SELECT * FROM stock_prices")
for row in c.fetchall():
    print(row)

结果如下:

('RY', 96.61)
(None, 58.69)
('BNS', 80.35)

虽然我可以用'NA'更新符号为None的每一行,但我宁愿第一次正确插入行。

注意:我正在使用 odo 函数,因为对于我的实际项目,我将插入到表中的文件大到几千兆字节,包含大约15-20列。在我看来, odo 是我在短时间内完成我需要做的最快捷的方式。

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是使用pandas并指定<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script type="text/javascript"> jQuery(function($) { var path = window.location.href; // because the 'href' property of the DOM element is the absolute path //alert($('ul a').length); $('ul a').each(function() { if (this.href === path) { $(this).addClass('active'); } //alert(this.href); }); }); </script> <ul> <li><a href="Untitled-4.html">Home</a></li> <li><a href="http://www.sweet-web-design.com/examples/active-item/active-class-1.html">About</a></li> </ul> 来阅读文件。

na_filter=False

导入:

>>> import pandas as pd
>>> df = pd.read_csv('stock_prices.csv',na_filter=False)
>>> df
  Ticker  Price
0     RY  96.61
1     NA  58.69
2    BNS  80.35

结果:

odo(df, output_sqlite, dshape=ds)