【发布时间】:2019-06-26 06:30:46
【问题描述】:
我正在尝试使用 IF 语句来触发 smtp 以触发电子邮件,但无论出于何种原因,我的匹配字符串都不会被解释为匹配项。
这是我正在使用的内容: 我正在导入我需要的所有内容并将“昨天”设置为字符串。
import csv, sqlite3
from datetime import date, timedelta
today = date.today()
yesterday = today - timedelta(days = 1)
yesterday = str(yesterday)
我构建了一个抓取工具来从各个站点抓取工作并将它们放到一个 csv 文件中。然后,我将遍历我的 csv 文件并获取所有符合我的“技能”标准的行:
skills = ('ninja')
csv_data = csv.DictReader(open('jobs.csv'))
for row in csv_data:
if skills in row.get('address', '').lower():
print("match")
print(row['day'])
print(type(row['day']))
print(yesterday)
print(type(yesterday))
cur.execute("INSERT INTO jobs_table(day,
link,
description,
compensation,
employment_type,
images,
address)
VALUES(:day,
:link,
:description,
:compensation,
:employment_type,
:images,
:address)", row,)
db.commit()
所有这些都可以正常工作,并将作业上传到我的数据库。 “打印”的输出给了我:
match
2019-06-14
<class 'str'>
2019-06-25
<class 'str'>
match
2019-06-25
<class 'str'>
2019-06-25
<class 'str'>
match
2019-06-25
<class 'str'>
2019-06-25
<class 'str'>
之后,它运行:
cur.execute(f"SELECT description, link
FROM jobs_table WHERE day = {yesterday}")
results = cur.fetchall()
if results:
for result in results:
result = str(result)
result = result.replace("'",'')
result = result.replace('(','')
result = result.replace(')','')
send_email(result)
else:
print('No Results In The Database')
print('')
print('')
db.close()
然后打印出来:
No Results In The Database
我不明白,因为如上所述,我的数据库的“日期”和日期时间的“昨天”都是匹配的字符串。
有人知道这里会发生什么吗?
【问题讨论】:
-
yesterday看起来像2019-06-14,对吧?另一个试图将值直接放入语句而不是将它们绑定到参数的受害者......
标签: python-3.x string sqlite datetime