Python的sqlite3模块没有合并我的数据库更改

时间:2014-04-14 16:11:27

标签: python sqlite


我正在尝试使用latlon天气数据填充数据库以供将来咨询。我是通过sqlite3 python模块完成的。

目前,我可以创建表(在程序执行后可以看到生成的.db文件)。我也可以在插入后查询行,因此我确定我的cursor.execute行正在运行。

不幸的是,在程序执行之后,在使用"select * from table"语句查询数据库时,没有任何内容出现(即使同一命令在程序执行时预先工作)。实际上,在转储sqlite3文件时,我只获取了create语句。

可能有什么不对?我没有错误或警告。

代码本身:

#!/usr/bin/python
import sys
import numpy
from netCDF4 import Dataset
import sqlite3

# Config variables.
N = 0
E = -30
S = -30
W = -60

ncfile = sys.argv[1];
ncdata = Dataset(ncfile,'r',format='NETCDF4')

sst = ncdata.variables['sea_surface_temperature']
lat = ncdata.variables['lat']
lon = ncdata.variables['lon']

# Data reshaping.
lat = lat[:]
lon = lon[:]
sst = sst[:]

c_lat = numpy.argwhere((lat <= N) & (lat >= S))
c_lon = numpy.argwhere((lon <= E) & (lon >= W))

conn = sqlite3.connect('sst.db')
c = conn.cursor()

# Create the database table.
c.execute("""CREATE TABLE current(lat real, lon real, sst real)""")

sqlite3.register_adapter(numpy.float64, float)
sqlite3.register_adapter(numpy.float32, float)
for lati in c_lat:
    for loni in c_lon:
        latn = lati[0]
        lonn = loni[0]
        lat_db = lat[latn]
        lon_db = lon[lonn]
        sst_db = sst[0,lonn][latn]

        values = (lat_db,lon_db,sst_db)
        if type(sst_db) != numpy.float64:
            continue

        c.execute("INSERT INTO current VALUES(?,?,?)",values)

# Test if data was inserted. (it is!)
c.execute("SELECT * FROM current")
print c.fetchall()

0 个答案:

没有答案