我试图在一个sqlite数据库中写入一些URL。我已经让这个工作没有网址。如果我用一个数字替换“Volumes/data/rc3/2/sdss/sdss_r_0_0.fits”,它甚至可以工作。在
c.execute("INSERT INTO rc3 (ID,ra,dec,radius,PGC_number,new_ra, new_dec, new_radius,ufits,gfits,rfits,ifits,zfits,best,low,in_SDSS_footprint,clean,error)VALUES({},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{})".format(n,pgc,ra,dec,radius,new_ra,new_dec,new_radius,2, 3, 4, 5, 6, 7,8,in_SDSS_footprint,clean,error))
它似乎将URL误认为是列,因为它抛出了错误:
^{pr2}$但我不知道该怎么办。提前谢谢。在
不要试图通过将值嵌入字符串格式命令来创建SQL语句。相反,请使用SQL参数。在
而不是这样:
…这样做:
^{pr2}$这在^{} 文档的最上面进行了解释。但简单地说,这样做的原因是(按重要性的大致顺序):
executemany
,它比循环更具可读性,也可能给SQL引擎更多的优化机会。在对你来说,这是你遇到的第二个。您试图使用字符串
Volumes/data/rc3/2/sdss/SDSS_r_0_0.fits
作为值。这是一个表达式,要求sqlite将Volumes
列除以data
列,除以rc3
,依此类推。如果希望将字符串存储为字符串,则需要将其放在引号中。在但是,同样,不要试图通过添加引号来解决这个问题;只需使用参数。在
相关问题 更多 >
编程相关推荐