无法使用 FastAPI 和 SQL SqlAlchemy 连接 My SQL 数据库

问题描述 投票:0回答:1

我刚刚开始学习Python和FastAPI来参与一个新项目,但我无法创建表或确保应用程序已连接到MySQL,是我的代码还是MySQL导致了问题?

文件

database.py
我在其中声明数据库配置

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

DATABASE_URL = "mysql+pymysql://root:rorthai2002@localhost:3306/book_store"

engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()


def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

文件

Model.py
我声明我的模型的位置

from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship, Mapped, mapped_column
from database import Base



class Author(Base):
    __tablebane__ = "authors"
    id = Mapped[int] = mapped_column(Integer, primary_key=True, index=True)
    name = Mapped[str] = mapped_column(String, nullable=False)
    books = relationship("Book", back_populates="author")


class Book(Base):
    __tablebane__ = "books"
    id = Mapped[int] = mapped_column(Integer, primary_key=True, index=True)
    title = Mapped[str] = mapped_column(String, nullable=False)
    release_year = Mapped[int] = mapped_column(Integer, nullable=True)
    author_id = Mapped[int] = mapped_column(Integer, ForeignKey("author.id"))

文件

main.py

from fastapi import FastAPI


from database import Base, engine
from schema import BookCreate


def create_tables():
    Base.metadata.create_all(engine)


def start_application():
    app = FastAPI()
    create_tables()
    return app


app = start_application()


@app.post("/books")
def create_books(book: BookCreate):
    return book


@app.get("/books")
def get_books():
    pass

我的 SQL 服务器(如果需要)
enter image description here

当我启动应用程序时,似乎没有创建表

非常感谢您的帮助

python python-3.x sqlalchemy fastapi
1个回答
0
投票

由于您在运行

Model.py
时尚未导入
Base.metadata.create_all
,因此它不知道它们。尝试将
import Model
添加到您的
main.py
文件中。

© www.soinside.com 2019 - 2024. All rights reserved.