简体   繁体   中英

Python SQLite3 - cursor.execute - no error

This is a piece of code which needs to perform the follow functionality:

  • Dump all table names in a database
  • From each table search for a column with either Latitude or Longitude in
  • Store these co-ords as a json file

The code was tested and working on a single database. However once it was put into another piece of code which calls it with different databases it now is not entering line 49. However there is no error either so I am struggling to see what the issue is as I have not changed anything.

Code snippet line 48 is the bottom line -

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

I am running this in the /tmp/ dir due to an earlier error with sqlite not working outside the temp.

Any questions please ask them.

Thanks!!

#!/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)

Fixed.

The issue was up here

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

The filename variable was being overwritten without the file extension so when SQLite searched it didn't find the file.

Strange no error appeared but it is fixed now by changing the filename var to filename1.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM