Python SQLite3 - cursor.execute - 没有错误

时间:2017-01-07 14:37:27

标签: python sqlite

这是一段需要执行以下功能的代码:

  • 转储数据库中的所有表名
  • 从每个表格中搜索
  • 中纬度或经度的列
  • 将这些合作伙伴存储为json文件

代码经过测试并在单个数据库上运行。然而,一旦它被放入另一段用不同的数据库调用它的代码,它现在不进入第49行。但是也没有错误,所以我很难看到问题是什么,因为我没有改变任何东西。

代码片段第48行是底线 -

cursor.execute("SELECT name FROM sqlite_master WHERE type='table'")
print (cursor)
    for tablerow in cursor.fetchall():

我在/ tmp / dir中运行它,因为早先的错误,sqlite在临时工作之外无效。

有任何问题请问他们。

谢谢!

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sqlite3
import os
import sys

filename = sys.argv[1]


def validateFile(filename):
    filename, fileExt = os.path.splitext(filename)
    print ("[Jconsole]   Python: Filename being tested - " + filename)
    if fileExt == '.db':
        databases(filename)
    elif fileExt == '.json':
        jsons(fileExt)
    elif fileExt == '':
        blank()
    else:
        print ('Unsupported format')
        print (fileExt)


def validate(number):
    try:
        number = float(number)
        if -90 <= number <= 180:
            return True
        else:
            return False
    except ValueError:
        pass


def databases(filename):
    dbName = sys.argv[2]
    print (dbName)
    idCounter = 0
    mainList = []
    lat = 0
    lon = 0
    with sqlite3.connect(filename) as conn:
        conn.row_factory = sqlite3.Row
        cursor = conn.cursor()
        cursor.execute("SELECT name FROM sqlite_master WHERE type='table'")
        print (cursor)
        for tablerow in cursor.fetchall():
            print ("YAY1")
            table = tablerow[0]
            cursor.execute('SELECT * FROM {t}'.format(t=table))
            for row in cursor:
                print(row)
                print ("YAY")
                tempList = []
                for field in row.keys():
                    tempList.append(str(field))
                    tempList.append(str(row[field]))
                for i in tempList:
                    if i in ('latitude', 'Latitude'):
                        index = tempList.index(i)
                        if validate(tempList[index + 1]):
                            idCounter += 1
                            tempList.append(idCounter)
                            (current_item, next_item) = \
                                (tempList[index], tempList[index + 1])
                            lat = next_item
                    if i in ('longitude', 'Longitude'):
                        index = tempList.index(i)
                        if validate(tempList[index + 1]):
                            (current_item, next_item) = \
                                (tempList[index], tempList[index + 1])
                            lon = next_item
                    result = '{ "id": ' + str(idCounter) \
                        + ', "content": "' + dbName + '", "title": "' \
                        + str(lat) + '", "className": "' + str(lon) \
                        + '", "type": "box"},'
                    mainList.append(result)
    file = open('appData.json', 'a')
    for item in mainList:
        file.write('%s\n' % item)
    file.close()


    # {
    # ...."id": 1,
    # ...."content": "<a class='thumbnail' href='./img/thumbs/thumb_IMG_20161102_151122.jpg'>IMG_20161102_151122.jpg</><span><img src='./img/thumbs/thumb_IMG_20161102_151122.jpg' border='0' /></span></a>",
    # ...."title": "50.7700721944444",
    # ...."className": "-0.8727045",
    # ...."start": "2016-11-02 15:11:22",
    # ...."type": "box"
    # },

def jsons(filename):
    print ('JSON')
def blank():
    print ('blank')

validateFile(filename)

1 个答案:

答案 0 :(得分:0)

固定。

问题出在这里

filename, fileExt = os.path.splitext(filename)

文件名变量被覆盖而没有文件扩展名,因此当SQLite搜索时它没有找到该文件。

奇怪没有出现错误,但现在通过将文件名var更改为filename1来修复它。