Python sqlite3 cursor.fetchall()返回一个空数组
我使用ssh连接到一个远程服务器,在那里我创建了两个python文件作为测试:一个用于创建数据库,另一个用于从中读取数据 创建数据库的脚本Python sqlite3 cursor.fetchall()返回一个空数组,python,sqlite,Python,Sqlite,我使用ssh连接到一个远程服务器,在那里我创建了两个python文件作为测试:一个用于创建数据库,另一个用于从中读取数据 创建数据库的脚本 import os import sqlite3 # set up database conn = sqlite3.connect('Materials.db') c = conn.cursor() def createTable(): c.execute("DROP TABLE IF EXISTS images") c.
import os
import sqlite3
# set up database
conn = sqlite3.connect('Materials.db')
c = conn.cursor()
def createTable():
c.execute("DROP TABLE IF EXISTS images")
c.execute("CREATE TABLE images(ID TEXT, url TEXT)")
createTable()
path = os.getcwd()
imagepath = "/home/rootadmin/1080_images"
imagedir = os.listdir(imagepath)
for image in range(0,len(imagedir)):
c.execute('INSERT INTO images(ID, url) VALUES(?,?)',(imagedir[image],'www.google.com'))
print(imagedir[image])
在这里,打印命令需要的数据,例如打印图像的ID
在从数据库读取数据的脚本中:
import sqlite3
conn = sqlite3.connect('Materials.db')
c = conn.cursor()
c.execute('SELECT ID FROM images')
objectId = c.fetchall()
print(objectId)
我对sqlite3的了解有限,但我希望第二个脚本中的print命令能够从Materials.db打印images表中找到的ID,但它返回一个空数组 插入时需要提交事务:
for image in range(0,len(imagedir)):
c.execute('INSERT INTO images(ID, url) VALUES(?,?)',(imagedir[image],'www.google.com'))
print(imagedir[image])
conn.commit()
或在上下文退出时自动提交:
with conn:
for image in range(0,len(imagedir)):
c.execute('INSERT INTO images(ID, url) VALUES(?,?)',(imagedir[image],'www.google.com'))
print(imagedir[image])
这还可以确保在出现异常时显式回滚事务。插入时需要提交事务:
for image in range(0,len(imagedir)):
c.execute('INSERT INTO images(ID, url) VALUES(?,?)',(imagedir[image],'www.google.com'))
print(imagedir[image])
conn.commit()
或在上下文退出时自动提交:
with conn:
for image in range(0,len(imagedir)):
c.execute('INSERT INTO images(ID, url) VALUES(?,?)',(imagedir[image],'www.google.com'))
print(imagedir[image])
这还可以确保在出现异常时显式回滚事务。这很有效,谢谢。您能详细介绍一下如何使用连接作为上下文管理器吗?@MitchellvanZuylen:我链接到了相关的文档部分。@MitchellvanZuylen:有关上下文管理器工作的详细信息,请参阅。这很有效,谢谢。您能否详细介绍一下如何使用连接作为上下文管理器?@MitchellvanZuylen:我链接到了相关的文档部分。@MitchellvanZuylen:有关上下文管理器的操作的详细信息,请参阅。您的for循环也可以改进。在imagedir中执行for项:在循环中使用新变量item而不是imagedir[image]顺便说一句,for循环也可以改进。在imagedir中执行for item:并在循环中使用新变量item而不是imagedir[image]