首先我知道有一些像这样的问题,我读了它们,但它们对我没用。
我有一些来自金融市场的 .csv 文件,我想将它们转移到 SQLite3 数据库表。我为此目的使用了 Odo Python包,但我遇到了一个很大的错误。
这是样本数据:
EUR/USD,20170102 00:00:01.265,1.0523,1.05307
EUR/USD,20170102 00:00:05.818,1.0523,1.05307
EUR/USD,20170102 00:00:06.833,1.05158,1.05349
我们一步一步走:所有csv文件和数据库都在 D驱动器中。我用这个命令创建了 sina DB ,然后是 Sina1 table (在SQLite Studio中):
CREATE TABLE sina.sina1 (Symbol text, DateTime text, Bid real, Ask real);
然后我尝试使用Python(Anaconda)通过此代码输入数据:
[有2个csv文件。它们都是相同的,但第一个带有标题,第二个没有标题,如在Odo文档中那样。]
import sqlite3
from odo import odo, discover, resource
# connect to sina database
conn = sqlite3.connect('d:/sina.db')
# use odo to detect the shape and datatype of csv file
data_shape = discover(resource('d:/with_header.csv'))
# Transfer from csv file to table called 'sina1' within database 'sina.db'
odo('d:/parsclick/without_header.csv', 'sqlite:////d:/sina.db::sina1', dshape = data_shape)
# close database
conn.close()
我以不同的方式逐行测试了这段代码。我在这个DB中创建了一个新表(使用SQLite studio)并在python解释器中使用 select 命令获取数据,因此它没有连接问题。我手动输入了data_shape这种格式(与表格相同):
data_shape = "var * {simbole: string, DateTime: string, Bid: float64, Ask: float64}"
与以下几点不同:
var * {simbole: ?string, DateTime: ?datetime, Bid: float64, Ask: float64}
从第一个代码获得。
我还将D驱动器中所有文件的权限更改为每个人的完全访问权限,并以管理员身份运行计算机(Windows 10)。此外,我检查了路径。 但这些并没有改变故事,每次都会导致这个错误:
文件“C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ sqlalchemy \ engine \ default.py”, 第410行,连接中 return self.dbapi.connect(* cargs,** cparams)
OperationalError:(sqlite3.OperationalError)无法打开数据库 文件(关于此错误的背景:http://sqlalche.me/e/e3q8)