我使用sqlalchemy创建了一个表,我想在mysql中设置默认时间戳,但是我的代码无法将其插入到mysql中
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, Integer, Float, ForeignKey,TIMESTAMP
Base = declarative_base()
DBSession = sessionmaker(bind=engine)
session = DBSession()
class Book(Base):
__tablename__ = 'book'
bid = Column(Integer, primary_key=True)
bname = Column(String(20))
price = Column(Integer)
student_id = Column(Integer, ForeignKey(Student.id))
student = relationship(Student)
insert_time = Column(TIMESTAMP(timezone=False),
default=datetime.datetime.now())
Base.metadata.create_all(engine)
books = pd.DataFrame({"bname": ['a','b','c','d'],
"price":[128,22,67,190],
'student_id':[1,1,3,2]})
books.to_sql('book',engine,if_exists='append',index=False)
看看书桌,insert_time
字段是null
,而不是日期时间,我该如何处理?
答案 0 :(得分:2)
您可以使用TIMESTAMP的Datetime实例
import datetime
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, Integer, Float, ForeignKey,DateTime
Base = declarative_base()
DBSession = sessionmaker(bind=engine)
session = DBSession()
class Book(Base):
__tablename__ = 'book'
bid = Column(Integer, primary_key=True)
bname = Column(String(20))
price = Column(Integer)
student_id = Column(Integer, ForeignKey(Student.id))
student = relationship(Student)
insert_time = Column(Datetime,
default=datetime.datetime.now())
Base.metadata.create_all(engine)
books = pd.DataFrame({"bname": ['a','b','c','d'],
"price":[128,22,67,190],
'student_id':[1,1,3,2]})
books.to_sql('book',engine,if_exists='append',index=False)