说明
做数据挖掘离不开python,存储数据离不开sqlite,操作sqlite离不开sqlalchemy。但sqlite不直接支持日期类型。于是会遇到形形色色的问题。
表定义
日期直接用TEXT类型
create table follows
(
row_id INTEGER not null
primary key autoincrement,
user_id VARCHAR,
follow_id VARCHAR,
follow_me VARCHAR,
status varchar(16),
update_date TEXT,
create_date TEXT
);
实体定义
import datetime
from sqlalchemy import (
create_engine,
Column,
Integer,
String, DateTime)
class Follows(Base):
__tablename__ = 'follows'
__table_args__ = {'sqlite_autoincrement': True}
row_id = Column(Integer, primary_key=True)
user_id = Column(String)
follow_id = Column(String)
follow_me = Column(String)
status = Column(String)
update_date = Column(DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now)
create_date = Column(DateTime, default=datetime.datetime.now)
插入数据
如果直接follow.create_date = ‘2022-12-10’,则报错:
Error - "SQLite DateTime type only accepts Python datetime and date objects as input."
需要:
follow.create_date = datetime(2022, 12, 8, 10, 10, 10)
此外, 日期的常见操作(如diff)
expiration_year = int(form.expiration_date.data[:4])
expiration_month = int(form.expiration_date.data[5:7])
expiration_date = int(form.expiration_date.data[8:10])
expiration_date =datetime(expiration_year,expiration_month,expiration_date)