簡體   English   中英

帶Python的Sqlite3返回額外數據

[英]Sqlite3 with Python returning extra data

我正在一個個人項目上,通過創建DVD庫存應用程序來學習將SQLite3與Python結合使用。 我與SQLite相關的函數取得了一些成功,這些函數位於庫文件中,並打算從應用程序的其他部分調用。

我在查詢中返回無關數據時遇到了問題,在這種情況下,相同數據兩次。

我正在測試一個簡單查詢表並返回其所有值的函數。 如果我通過駐留在庫文件中的調用運行該函數,則它可以正常工作,但是如果我從導入該庫文件的外部文件中調用該函數,它將返回兩次數據,我不確定為什么。

功能如下:

def query_all():
con = db_connect()
cur = con.cursor()
cur.execute('''SELECT film_id, film_name, film_genre, date_added FROM 
film_inv''')
all_rows = cur.fetchall()
for row in all_rows:
    print('{0} : {1}, {2}, {3}'.format(row[0], row[1], row[2], row[3]))
con.close()

從庫文件中運行時,它將返回以下正確結果:

1 : Star Wars, Comedy, 2018-11-15 12:23:28
2 : Titanic, Drama, 2018-11-15 12:28:55
3 : Cars, Family, 2018-11-15 12:29:18
4 : Christmas Vacation, Holiday, 2018-11-15 12:37:59
6 : Cinderella, Family, 2018-11-15 12:43:13

Process finished with exit code 0

通過外部文件調用時,它將兩次返回結果:

try:
    pydvd_utils.query_all()
except Exception as e:
    print(e)

1 : Star Wars, Comedy, 2018-11-15 12:23:28
2 : Titanic, Drama, 2018-11-15 12:28:55
3 : Cars, Family, 2018-11-15 12:29:18
4 : Christmas Vacation, Holiday, 2018-11-15 12:37:59
6 : Cinderella, Family, 2018-11-15 12:43:13
1 : Star Wars, Comedy, 2018-11-15 12:23:28
2 : Titanic, Drama, 2018-11-15 12:28:55
3 : Cars, Family, 2018-11-15 12:29:18
4 : Christmas Vacation, Holiday, 2018-11-15 12:37:59
6 : Cinderella, Family, 2018-11-15 12:43:13

Process finished with exit code 0

外部文件query_all.py很簡單,僅調用以下函數:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import pydvd_utils

try:
    pydvd_utils.query_all()
except Exception as e:
    print(e)

面對手掌的時刻!

由於PEBKAC錯誤,該功能肯定運行了兩次。

我在庫中調用了用於直接測試的函數,但未將其注釋掉。 從外部調用該函數將先運行該函數,然后再調用同時存在於庫文件中的該函數。

注釋掉對庫中函數的測試調用即可解決該問題。

謝謝大家的指導。

暫無
暫無

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

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