Python valueError:无法解析日期时间字符串:在SQL中使用单引号

时间:2019-10-15 08:08:16

标签: python sql

我正在从txt文件中将数据导入表格,该文件如下所示:

 1,2019-8-24,Broccoli Chinese,17,1.57 
 2,2019-8-24,chia seeds,11,0.20
 3,2019-8-24,flax seeds,25,0.20
 4,2019-8-24,sunflower seeds,26,0.30

当我在python shell中打印表格时,我得到:

(1, '2019-8-24', 'Broccoli Chinese', 17, 1.57)
(2, '2019-8-24', 'chia seeds', 11, 0.2)
(3, '2019-8-24', 'flax seeds', 25, 0.2)
(4, '2019-8-24', 'sunflower seeds', 26, 0.3)

后来在使用表格时出现类似错误

valueError: Couldn't parse datetime string: '2019-8-24'

这些单引号''是否实际上在表条目中?就像在实际表中是'2019-8-24'还是只是2019-8-24,当我打印出该行时,它会添加''。

我只是在问价错误时遇到问题,并且想知道是否可能是在导入期间以某种方式在表中的日期附近输入了单引号'',并且可能需要将其删除吗?< / p>

编辑

这是由于错误而无法运行的实际代码

from flask import Flask, render_template, url_for, request, redirect
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SECRET_KEY'] = 'secret' 
db = SQLAlchemy(app)

from app import FoodConsumed_Tb

rows = FoodConsumed_Tb.query.all()

for row in rows:
    consumed_food_entry_to_update = FoodConsumed_Tb.query.get_or_404(row.id)
    consumed_food_entry_to_update.date_created = datetime.strptime(consumed_food_entry_to_update.date_created, "%Y-%m-%d").date()

db.session.commit()

1 个答案:

答案 0 :(得分:0)

我的猜测是您的SQL版本不希望月份为个位数。您可以尝试使用Python自己清理这些数据,例如

def repl(m):
    year = m.group(1)
    month = m.group(2).zfill(2)
    day = m.group(3).zfill(2)

    return year + '-' + month + '-' + day

date = '2019-8-24'
date_new = re.sub('(\d+)-(\d+)-(\d+)', repl, date)
print(date)
print(date_new)

此打印:

2019-8-24
2019-08-24

我在这里要做的就是用左边的零将月份和日期部分填充到两位数。假设您不希望有来自中世纪的任何数据,那么我也不想打扰这一年。