当前位置: 首页 > 知识库问答 >
问题:

我在连接docker mysql和fastapi时遇到问题

齐健柏
2023-03-14

当我运行此命令时

uvicorn应用程序。主:应用程序--主机0.0.0.0--端口8000--重新加载

我得到这个错误

SQL炼金术。exc.OperationalError:(pymysql.err.OperationalError)(2003,“无法连接到“0.0.0.0”上的MySQL服务器([WinError 10049]请求的地址在其上下文中无效)”)(此错误的背景信息位于:http://sqlalche.me/e/14/e3q8)

以下两个命令都可以正常工作:

uvicornapp.main: app--host127.0.0.1--port 8000--reload

uvicornapp.main: app--hostlocalhost--port 8000--reload

只有0.0.0.0不起作用<我曾试图解决这个问题,但现在我请你们看看这个。谢谢

这是Docker image运行代码

docker run-d--name Fast api-db-p 3306:3306-eMYSQL_ROOT_PASSWORD=1234-eMYSQL_DATABASE=dev-eMYSQL_USER=admin-eMYSQL_PASSWORD=1234 mysql: 8.0--字符集服务器=utf8mb4--colation-server=utf8mb4_unicode_ci

# models.py

from sqlalchemy import Boolean, Column, Integer, String

from .database import Base

class User(Base):
    __tablename__ = "user"

    id = Column(Integer, primary_key=True)
    email = Column(String(255), unique=True, index=True)
    password = Column(String(255))
    is_active = Column(Boolean, default=True)
# database.py

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


engine = create_engine("mysql+pymysql://admin:1234@0.0.0.0:3306/dev")
SessionLocal = sessionmaker(
    bind=engine,
    autocommit=False,
    autoflush=False,
)

Base = declarative_base()
# schemas.py

from pydantic import BaseModel


class UserBase(BaseModel):
    email: str


class UserCreate(UserBase):
    password: str


class User(UserBase):
    id: int
    email: str
    is_active: bool

    class Config:
        orm_mode = True
# main.py

from typing import List

from fastapi import Depends, FastAPI, HTTPException
from sqlalchemy.orm import Session

from . import models, schemas
from .database import SessionLocal, engine

models.Base.metadata.create_all(bind=engine)


app = FastAPI()


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


@app.post("/users", response_model=schemas.User)
def create_user(user: schemas.UserCreate, db: Session = Depends(get_db)):
    existed_user = db.query(models.User).filter_by(
        email=user.email
    ).first()

    if existed_user:
        raise HTTPException(status_code=400, detail="Email already registered")

    user = models.User(email=user.email, password=user.password)
    db.add(user)
    db.commit()

    return user


@app.get("/users", response_model=List[schemas.User])
def read_users(db: Session = Depends(get_db)):
    return db.query(models.User).all()

docker镜像

共有1个答案

贺英悟
2023-03-14

尝试:

引擎=创建引擎(“mysqlpymysql://admin:1234@本地主机:3306/dev”)

 类似资料:
  • 我想把这个项目放到github上。我创建了一个存储库。复制的代码被粘贴到由代码连接的终端中。当我激活设备时,它会给我一个错误。错误是找不到存储库(存储库名称与我要连接的存储库的名称完全不同)

  • 我在这里完全被难住了(斯卡拉神秘的神秘性没有帮助:-)) 我试图使用Rabbitmq设置gatling测试(即我想把消息推送到一个Rabbit q中,并计算出现在第二个队列中需要多长时间),我使用gatling-amqp-plugin来做这件事,因为gatling本机不支持amqp。 为了让这对我来说更“有趣”,我不使用Scala编写代码,也从未使用过gatling。。。。 所以我参加了“入门”项

  • 弃用:Python 2.7将于2020年1月1日结束其使用寿命。请升级您的Python,因为Python 2.7将在该日期后不再维护。pip的未来版本将放弃对Python2.7的支持。 已满足的要求:烧瓶包装在/usr/local/lib/python2.7/site-packages(3.0.7)中 已满足要求:六个in/usr/local/lib/python2.7/site-packages

  • 我在邮递员中到达终点时得到了这个错误 ProductsRepo Application.Properties

  • 我使用的是JAX-RS注解,但我遇到了@BeanParam的问题。我用的是Wildfly-Swarm和maven。以下几行是我错误的一部分:

  • 编辑:我刚刚意识到,即使是一个带有应用程序条的简单屏幕,也会发生这种情况 错误:任务“:app:checkdebugaarmadata”的执行失败 无法解析配置“:app:debugRuntimeClasspath”的所有文件。无法解析com。谷歌。firebase:firebase firestore:22.1.2。所需人员:项目:应用程序 无法解析com。谷歌。firebase:firebas