我刚刚开始学习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
当我启动应用程序时,似乎没有创建表
非常感谢您的帮助
由于您在运行
Model.py
时尚未导入 Base.metadata.create_all
,因此它不知道它们。尝试将 import Model
添加到您的 main.py
文件中。