我正在进入远程服务器,在那里我创建了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,但它会返回一个空数组。
答案 0 :(得分:2)
您需要在插入时提交您的交易:
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()
当上下文退出时,或use the connection as a context manager自动提交:
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])
这还可以确保在发生异常时显式回滚事务。