OperationalError:(sqlite3.OperationalError)无法打开数据库文件

时间:2018-04-23 16:18:27

标签: python sqlite csv sqlalchemy odo

首先我知道有一些像这样的问题,我读了它们,但它们对我没用。

我有一些来自金融市场的 .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

0 个答案:

没有答案