创建表失败
来源:4-5 通过ORM新增数据到数据库
燚燚生辉
2021-01-15
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import Column,Integer,String,DateTime,Boolean
engine = create_engine('mysql+pymysql://root:root@localhost:3306/news?charset=utf8')
Session = sessionmaker(bind=engine)
Base = declarative_base()
class News(Base):
# 表名
__tablename__ = 'news'
id = Column(Integer, primary_key=True, autoincrement=True)
title = Column(String(200), nullable=False)
content = Column(String(2000), nullable=False, default='新闻内容')
types = Column(String(20), nullable=False)
image = Column(String(300), default="")
author = Column(String(20), default="")
view_count = Column(Integer, default=0)
created_at = Column(DateTime)
is_valid = Column(Boolean, default=True)
class MysqlOrmTest(object):
def __init__(self):
self.session = Session()
def add_one(self):
# 添加一条数据
news_obj = News(
title='ORM',
types='时事新闻'
)
self.session.add(news_obj)
self.session.commit()
return news_obj
def main():
obj = MysqlOrmTest()
result = obj.add_one()
print(result)
if __name__ == "__main__":
main()
不知道什么原因总是创建表失败,找不到表
报错信息
sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1146, "Table 'news.news' doesn't exist") [SQL: 'INSERT INTO news (title, content, types, image, author, view_count, created_at, is_valid) VALUES (%(title)s, %(content)s, %(types)s, %(image)s, %(author)s, %(view_count)s, %(created_at)s, %(is_valid)s)'] [parameters: {'image': '', 'view_count': 0, 'title': '', 'author': '', 'created_at': None, 'content': '新闻内容', 'is_valid': 1, 'types': '时事新闻'}]
写回答
2回答
-
可以这样操作:
def create_db(): """ 创建表 """ Base.metadata.create_all(engine) def drop_db(): """ 删除表 """ Base.metadata.drop_all(engine)
012021-01-23 -
NavCat
2021-01-18
你这个错误是这样的:
你往news数据库的news表中执行insert,插入一条记录,但是这个表不存在。
所以你需要创建news数据库,然后创建对应的表,再运行你的这个python代码。
012021-01-18
Python操作三大主流数据库-MySQL+MongoDB+Redis
一次实战同时掌握Python操作MySQL,MongoDB,Redis 三大数据库使用技巧
2024 学习 · 376 问题
相似问题