disk I/O error with SQLite3 in Python 3 when writing to a database(写入数据库时,Python 3中的SQLite3出现磁盘I/O错误)
问题描述
我是一个刚开始使用Python的学生,任务是创建一个关系数据库管理系统。我想我走了很远,但我似乎碰壁了。这是我的代码:
import csv
import sqlite3
conn = sqlite3.connect('unfccc.db')
c = conn.cursor()
c.execute('''CREATE TABLE unfccc (
Country TEXT,
CodeCountryFormat TEXT,
NamePollutant TEXT,
NameYearSector TEXT,
NameParent TEXT,
Sector TEXT,
CodeSector TEXT,
CNUEDSPD TEXT
)''')
def insert_row(Country, CodeCountryFormat, NamePollutant, NameYearSector, NameParent, Sector, CodeSector, CNUEDSPD):
c.execute("INSERT INTO unfccc VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (Country, CodeCountryFormat, NamePollutant, NameYearSector, NameParent, Sector, CodeSector, CNUEDSPD))
conn.commit()
with open('UNFCCC_v20.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter=' ')
counter = 0
for row in readCSV:
insert_row(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7])
counter = counter+1
print('%d down, more to go' % counter)
conn.close()
当我用第4行将输入定向到:Memory运行它时:它工作得很好,并且我拥有我认为是关系数据库的东西。
但是,当我尝试像这样运行代码,将数据写入数据库文件时,收到以下错误:
File "<ipython-input-13-4c50216842bc>", line 19, in insert_row
c.execute("INSERT INTO unfccc VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (Country, CodeCountryFormat, NamePollutant, NameYearSector, NameParent, Sector, CodeSector, CNUEDSPD))
OperationalError: disk I/O error
我搜索了Stackoverflow,并使用了Google,但我认为我找到的案例中没有任何一个与我在这里尝试做的事情相匹配(或者我没有弄清楚发生了什么的知识)。关于我的代码,我注意到的另一件事是,它将数据输入到内存的速度非常快,但当我写入数据库文件时,它真的很慢,这不应该是硬件限制,因为我使用的是固态硬盘。如有任何帮助,我们将不胜感激!
推荐答案
将备份/同步设置为在处理存储在Google Drive上的项目时暂停在系统托盘图标上将防止出现磁盘I/O错误。
这是因为当文件被写入或更改时,Backup&;sync会在执行此操作时尝试将新版本上载到您的Google Drive;该文件将变为"只读"文件。
暂停同步时,您的Google Drive文件夹的行为更像是普通目录。
(单击->设置->暂停/继续)
这篇关于写入数据库时,Python 3中的SQLite3出现磁盘I/O错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:写入数据库时,Python 3中的SQLite3出现磁盘I/O错误
基础教程推荐
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- 带更新的 sqlite CTE 2022-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
