I have just started learning about Python and FastAPI to participate in a new project, but I can’t create tables or ensure that the application has connected to MySQL, is my code or MySQL cause the issue?
File database.py
where I declare the database config
<code>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()
</code>
<code>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()
</code>
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()
File Model.py
where I declare my model
<code>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"))
</code>
<code>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"))
</code>
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"))
File main.py
<code>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
</code>
<code>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
</code>
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
My SQL server if need
It seem no table has created when I start the application
thanks a lot for helping