在这节课敲代码的时候遇见了一个错误sqlalchemy.orm.exc.UnmappedInstanceError: Class 'builtins.NoneType' is not mapped,这个错误信息度娘了一下结果好像解决不了,如果没解决得话课程进度又往下不了。希望老师能帮忙测试一下~(ps:我以为是我代码输错了,检查几次发现没问题,把课程资料那里得源码复制下来运行还是出错)
相关代码:
from sqlalchemy import create_engine,Column,Integer,String,Float,DECIMAL,Boolean,Enum,Date,DateTime,Time,Text
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.dialects.mysql import LONGTEXT
from sqlalchemy.orm import sessionmaker
from datetime import date,datetime,time
#在python 3.x中 有enum模块
import enum
#准备连接数据库基本信息
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'first_sqlalchemy'
USERNAME = 'root'
PASSWORD = 'root'
#dialect+driver://username:password@host:port/database?charset=utf8
#按照上述的格式来 组织数据库信息
DB_URI ="mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8".format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)
#创建数据库引擎
engine = create_engine(DB_URI)
Base = declarative_base(engine)
#需求:sqlalchemy中常用的字段数据类型有哪些?
#定义一个枚举类
class TagEnum(enum.Enum):
python="Python"
flask="FLASK"
django="DJANGO"
class News(Base):
__tablename__='news'
id = Column(Integer,primary_key=True,autoincrement=True)
price1 = Column(Float) #存储数据时存在精度丢失问题
price2 = Column(DECIMAL(10,4))
title = Column(String(50))
is_delete =Column(Boolean)
tag1 =Column(Enum('PYTHON','FLASK','DJANGO')) #枚举常规写法
tag2 =Column(Enum(TagEnum)) #枚举另一种写法
create_time1=Column(Date)
create_time2=Column(DateTime)
create_time3=Column(Time)
content1 =Column(Text)
content2 =Column(LONGTEXT)
Base.metadata.drop_all() #将Base上的ORM类模型对应数据中的表都删除
Base.metadata.create_all() #创建Base上的ORM类到数据库中成为表
错误信息截图:
