Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python sqlite3 cursor.fetchall()返回一个空数组_Python_Sqlite - Fatal编程技术网

Python sqlite3 cursor.fetchall()返回一个空数组

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.

我使用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.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]