簡體   English   中英

Python SQLite3-cursor.execute-沒有錯誤

[英]Python SQLite3 - cursor.execute - no error

這是一段代碼,需要執行以下功能:

  • 轉儲數據庫中的所有表名
  • 從每個表中搜索一個包含“緯度”或“經度”的列
  • 將這些坐標存儲為json文件

該代碼已經過測試,可以在單個數據庫上工作。 但是,一旦將它放到另一段代碼中,並用不同的數據庫對其進行調用,它現在就不會進入第49行。但是也沒有錯誤,因此我一直在努力尋找問題所在,因為我沒有進行任何更改。

代碼段第48行是最底行-

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

我在/ tmp /目錄中運行此命令,原因是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)

固定。

問題在這里

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

沒有文件擴展名的文件名變量被覆蓋,因此當SQLite搜索時找不到文件。

奇怪的是沒有錯誤出現,但是現在可以通過將文件名var更改為filename1來解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM