比较 datetime mysql 和 flask
Posted
技术标签:
【中文标题】比较 datetime mysql 和 flask【英文标题】:Compare datetime mysql and flask 【发布时间】:2020-10-07 05:13:41 【问题描述】:我正在尝试比较两个日期时间,结果显示 sql 语法错误
from flask import Flask
from flask import request, jsonify
from datetime import datetime
import pymysql
app = Flask(__name__)
class Database:
def __init__(self):
host = "localhost"
user = "test"
password = "test123"
db = "test"
self.con = pymysql.connect(host=host, user=user, password=password, db=db, cursorclass=pymysql.cursors.DictCursor)
self.cur = self.con.cursor()
@app.route('/getCameraTypeAndTime/<string:date1>/<string:date2>', methods=['GET'])
def getCameraTypeAndTime(date1,date2):
start = datetime.strptime(date1, '%Y-%m-%d %H:%M:%S')
end = datetime.strptime(date2, '%Y-%m-%d %H:%M:%S')
db=Database()
result1=db.cur.execute("Select camera, COUNT(*) as freq from face_log group by camera where timestamp>start and timestamp_end<end")
return jsonify('result': result1)
if __name__ == '__main__':
app.run(debug=True)
sql中的格式是datetime但不会比较
【问题讨论】:
【参考方案1】:主要问题是您试图将列值与 START
和 END
MySQL keywords 而不是您的 start
和 end
变量进行比较。您需要使用占位符进行查询并将变量传递给它(根据PyMySQL documentation):
db.cur.execute("""
SELECT camera, COUNT(*) AS freq FROM face_log
WHERE timestamp > %s and timestamp_end < %s
GROUP BY camera
""", start, end)
另请注意,SQL 查询的GROUP BY
部分必须在WHERE
部分之后。
【讨论】:
以上是关于比较 datetime mysql 和 flask的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 将 DATE 字符串与 DATETIME 字段中的字符串进行比较
Flask 学习-94.Flask-SQLAlchemy 按日期时间查询