带Python的Sqlite3返回额外数据

时间:2018-11-15 18:13:36

标签: python python-3.x sqlite

我正在开发一个个人项目,以通过创建DVD库存应用程序来学习如何将SQLite3与Python结合使用。我的SQLite相关功能已经取得了一些成功,这些功能位于库文件中,可以从应用程序的其他部分调用。

我遇到了一个问题,查询中返回了多余的数据,在这种情况下,相同的数据两次。

我正在测试一个仅查询表并返回其所有值的函数。如果我从驻留在库文件中的调用中运行该函数,则它可以正常运行,但是如果从导入该库文件的外部文件中调用该函数,它将返回两次数据,我不确定为什么。

功能如下:

myGrid

从库文件中运行时,它会返回以下正确结果:

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

外部文件query_all.py很简单,仅调用该函数:

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

1 个答案:

答案 0 :(得分:0)

掌心瞬间!

由于PEBKAC错误,该功能肯定运行了两次。

我在库中调用了用于直接测试的函数,但未将其注释掉。外部调用该函数将先运行该函数,然后再调用同时存在于库文件中的函数。

注释对库中函数的测试调用,可以解决问题。

谢谢大家的指导。