[英]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.