解决SQLAlchemy(Python)调用MySQL数据库时插入时间戳数据的问题

在建表的类中定义时间戳类型的column时,应写成:
d_time = db.Column(db.DateTime, nullable=False)

向MySQL数据库中插入数据时,插入数据的类型和格式(以当前系统时间为例)应写成如下形式:
d_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
此处需要import time

这样插入数据库中的数据格式就是这样的了:
在这里插入图片描述
附上在Flask项目中利用SQLAlchemy建表,插入数据,删表全部代码:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import time
import csv
import pymysql
pymysql.install_as_MySQLdb()

app = Flask(__name__)

# 配置数据库地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@127.0.0.1/real_time_db'
# 跟踪数据库的修改,默认填False
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)


class Fur(db.Model):
    # 定义表名
    __tablename__ = 'fur_data'
    id = db.Column(db.Integer, primary_key=True)
    current_A = db.Column(db.Float, nullable=False)
    current_B = db.Column(db.Float, nullable=False)
    current_C = db.Column(db.Float, nullable=False)
    action_A = db.Column(db.Float, nullable=False)
    action_B = db.Column(db.Float, nullable=False)
    action_C = db.Column(db.Float, nullable=False)
    d_time = db.Column(db.DateTime, nullable=False)


# 删除表
db.drop_all()
# 创建表
db.create_all()

reader = csv.reader(open('FMF_data.csv'))
# A,B,C电流和频率的list初始化
current_A_list = []
current_B_list = []
current_C_list = []
action_A_list = []
action_B_list = []
action_C_list = []

for list in reader:
    current_A_list.append(list[0])
    current_B_list.append(list[1])
    current_C_list.append(list[2])
    action_A_list.append(list[3])
    action_B_list.append(list[4])
    action_C_list.append(list[5])

len = len(current_A_list)
i = 0

# 每隔一秒插入一个数据
while True:
    time.sleep(1)
    current_A = current_A_list[i]
    current_B = current_B_list[i]
    current_C = current_C_list[i]
    action_A = action_A_list[i]
    action_B = action_B_list[i]
    action_C = action_C_list[i]
    d_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

    fur = Fur(current_A=current_A, current_B=current_B, current_C=current_C, action_A=action_A, action_B=action_B, action_C=action_C, d_time=d_time)
    db.session.add(fur)
    db.session.commit()
    print("插入成功!")
    i += 1
    if i == 3600:
        i = 0


@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run()

一个实时更新的数据库,每一秒插入一条数据,亲测可用!

完整代码的详细说明请参考我的另一篇博客:https://blog.csdn.net/xiecheng1995/article/details/92427868

本人原创。转载请标明出处,谢谢!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值