python - Python Flask 和 SQLAlchemy,从列中选择所有数据
问题描述
我正在尝试查询所有行以查找名为show_id
. 然后,我想将要添加到数据库中的每个潜在项目与结果进行比较。现在我能想到的最简单的方法是检查每个节目是否在结果中。如果是这样,则通过等。但是,以下代码段的结果将作为对象返回。所以这个检查失败了。
有没有更好的方法来创建查询来实现这一点?
shows_inDB = Show.query.filter(Show.show_id).all()
print(shows_inDB)
结果:
<app.models.user.Show object at 0x10c2c5fd0>,
<app.models.user.Show object at 0x10c2da080>,
<app.models.user.Show object at 0x10c2da0f0>
整个函数的代码:
def save_changes_show(show_details):
"""
Save the changes to the database
"""
try:
shows_inDB = Show.query.filter(Show.show_id).all()
print(shows_inDB)
for show in show_details:
#Check the show isnt already in the DB
if show['id'] in shows_inDB:
print(str(show['id']) + ' Already Present')
else:
#Add show to DB
tv_show = Show(
show_id = show['id'],
seriesName = str(show['seriesName']).encode(),
aliases = str(show['aliases']).encode(),
banner = str(show['banner']).encode(),
seriesId = str(show['seriesId']).encode(),
status = str(show['status']).encode(),
firstAired = str(show['firstAired']).encode(),
network = str(show['network']).encode(),
networkId = str(show['networkId']).encode(),
runtime = str(show['runtime']).encode(),
genre = str(show['genre']).encode(),
overview = str(show['overview']).encode(),
lastUpdated = str(show['lastUpdated']).encode(),
airsDayOfWeek = str(show['airsDayOfWeek']).encode(),
airsTime = str(show['airsTime']).encode(),
rating = str(show['rating']).encode(),
imdbId = str(show['imdbId']).encode(),
zap2itId = str(show['zap2itId']).encode(),
added = str(show['added']).encode(),
addedBy = str(show['addedBy']).encode(),
siteRating = str(show['siteRating']).encode(),
siteRatingCount = str(show['siteRatingCount']).encode(),
slug = str(show['slug']).encode()
)
db.session.add(tv_show)
db.session.commit()
except Exception:
print(traceback.print_exc())
解决方案
我决定使用上面的方法并将我想要的数据提取到一个列表中,将每个节目与列表进行比较。
show_compare = []
shows_inDB = Show.query.filter().all()
for item in shows_inDB:
show_compare.append(item.show_id)
for show in show_details:
#Check the show isnt already in the DB
if show['id'] in show_compare:
print(str(show['id']) + ' Already Present')
else:
#Add show to DB
推荐阅读
- machine-learning - BERT HuggingFace 给出 NaN 损失
- jpa - JPA PersistenceContextType 是否由容器管理?
- google-drive-api - 谷歌正在为 GDRIVE 中的文件和文件夹推出单亲而不是多亲。有什么好处?我只看到不便之处
- javascript - 未为 SAPUI5 自定义控件定义 valueStateText
- java - 附加二进制文件
- javascript - 在角度 6 中过滤具有多个值的相同键的数组对象
- c# - 如何使用 XmlSampleGenerator 在另一个 xsd 文件的 xmlElement 中添加一个 xsd 文件中的 xmlElement?
- python - 具有 if 条件的字符串列表上的方法或函数应用
- html - 仅使用 CSS 的 SVG 波浪效果
- css - 我为图标使用了 mdi-react 包,但是当它与 scss 结合使用时,“font-size”属性不起作用