跳转至内容
0
  • 版块
  • 讨论
  • 最新
  • 标签
  • 热门
  • 顶端
  • 用户
  • 版块
  • 讨论
  • 最新
  • 标签
  • 热门
  • 顶端
  • 用户
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Zephyr)
  • 不使用皮肤
折叠
JIKE社区
  1. 首页
  2. 讨论区
  3. 技术专区
  4. 本社区终于可以向 @ChatGPT 提问了!

本社区终于可以向 @ChatGPT 提问了!

已定时 已固定 已锁定 已移动 技术专区
11.5k 帖子 326 发布者 49.5m 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • ? 游客

    @ChatGPT docker部署FastAPI流程方法

    ChatGPTC 离线
    ChatGPTC 离线
    ChatGPT
    写于 最后由 编辑
    #1863

    guest说:

    docker部署FastAPI流程方法

    1. 安装docker环境:

    在操作系统上安装docker,并确保docker服务能够正常启动。

    1. 准备FastAPI相关环境:

    使用pip安装FastAPI,并安装其他的依赖库,例如Uvicorn、Gunicorn等。

    1. 准备docker镜像:

    从docker官方仓库下载需要的镜像。

    1. 编写dockerfile:

    编写dockerfile,用来指定如何构建docker镜像,并将FastAPI的相关环境安装到docker容器中。

    1. 编译docker镜像:

    使用docker build命令,根据dockerfile编译docker镜像。

    1. 运行docker容器:

    使用docker run命令,根据docker镜像启动docker容器。

    1. 部署FastAPI应用:

    在启动的docker容器中,运行FastAPI应用,完成FastAPI的部署。

    帖子内容中 @ChatGPT(注意前后空格,发帖后名称变色才行)。必须@才会回答

    1 条回复 最后回复
    0
    • ChatGPTC ChatGPT

      peng111说:

      sanaga11spro和联想X5哪个好

      联想X5更好一些。联想X5拥有更高的性能,拥有最新的酷睿i7处理器,支持8G RAM,拥有独立的NVIDIA GeForce GTX 1050Ti显卡,拥有15.6英寸的超清屏幕,而Sanaga11spro只支持Intel Pentium N5000处理器,支持4G RAM,拥有内置的Intel UHD Graphics 600显卡,拥有14英寸的屏幕。

      ? 该用户来自本论坛之外
      ? 该用户来自本论坛之外
      游客
      写于 最后由 编辑
      #1864

      @ChatGPT FastAPI引入日志系统,每次对数据库的操作都会打印sql日志

      ChatGPTC 1 条回复 最后回复
      0
      • ? 游客

        @ChatGPT FastAPI引入日志系统,每次对数据库的操作都会打印sql日志

        ChatGPTC 离线
        ChatGPTC 离线
        ChatGPT
        写于 最后由 编辑
        #1865

        guest说:

        FastAPI引入日志系统,每次对数据库的操作都会打印sql日志

        # utils/log.py
        """
        封装FastAPI的日志系统
        """
        import logging
        
        from fastapi.logger import logger
        
        logger.add(
            logger.file("log/app.log", format="{time} {level} {message}", rotation="1 day", retention="7 days"),
            level="INFO"
        )
        
        # 日志等级
        logging.basicConfig(level=logging.INFO)
        
        # 数据库sql日志
        def sql_log(sql: str, *args, **kwargs):
            """
            打印sql语句日志
            """
            logger.info('SQL: ' + sql)
            logger.info('SQL ARGS: ' + str(args or kwargs))
        
        
        # tests/conftest.py
        """
        测试时设置日志系统
        """
        import logging
        import pytest
        
        from utils.log import sql_log
        
        @pytest.fixture
        def set_log():
            """
            设置日志系统
            """
            logging.basicConfig(level=logging.INFO)
            logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
            logging.getLogger("sqlalchemy.pool").setLevel(logging.INFO)
            logging.getLogger("sqlalchemy.dialects.postgresql").setLevel(logging.INFO)
        
            from models.base import engine
            engine.echo = True
            engine.logger.setLevel(logging.INFO)
            engine.echo = False
            engine.logger.removeHandler(engine.logger.handlers[0])
            engine.logger.addHandler(logging.StreamHandler())
            engine.logger.addHandler(logging.FileHandler('log/sql.log'))
            engine.logger.info('SQL LOG ENABLED')
            engine.logger.info('='*80)
            engine.logger.info('')
            engine.log_pool_stats = True
            engine.logger.setLevel(logging.INFO)
            engine.logger.info('='*80)
            engine.logger.info('')
            engine.logger.info('SQL LOG DISABLED')
            engine.log_statement = sql_log
        
        

        在测试文件中,重写sql_log,并在测试前后调用set_log来打印sql日志

        # tests/test_user.py
        """
        用户模块单元测试
        """
        import json
        
        from fastapi.testclient import TestClient
        
        from app.main import app
        from models.user import User
        
        client = TestClient(app)
        
        def test_create_user(set_log):
            """
            测试创建用户
            """
            response = client.post("/users/",
                data=json.dumps({"username": "test_user", "password": "test_pass"}),
                headers={"Content-Type": "application/json"}
            )
            assert response.status_code == 200
            response_json = response.json()
            assert response_json["username"] == "test_user"
            assert response_json["password"] == "test_pass"
        
            user = User.get_by_username("test_user")
            assert user.username == "test_user"
        
        

        运行测试时,在sql.log中可以看到数据库操作的日志:

        2020-09-14 10:44:41,111 INFO SQL: SELECT users.id AS users_id, users.username AS users_username, users.password AS users_password 
        FROM users 
        WHERE users.username = %(username_1)s
        2020-09-14 10:44:41,111 INFO SQL ARGS: {'username_1': 'test_user'}
        2020-09-14 10:44:41,111 INFO SQL: INSERT INTO users (username, password) VALUES (%(username)s, %(password)s) RETURNING users.id
        2020-09-14 10:44:41,111 INFO SQL ARGS: {'password': 'test_pass', 'username': 'test_user'}
        

        帖子内容中 @ChatGPT(注意前后空格,发帖后名称变色才行)。必须@才会回答

        ? 2 条回复 最后回复
        0
        • ChatGPTC ChatGPT

          guest说:

          FastAPI引入日志系统,每次对数据库的操作都会打印sql日志

          # utils/log.py
          """
          封装FastAPI的日志系统
          """
          import logging
          
          from fastapi.logger import logger
          
          logger.add(
              logger.file("log/app.log", format="{time} {level} {message}", rotation="1 day", retention="7 days"),
              level="INFO"
          )
          
          # 日志等级
          logging.basicConfig(level=logging.INFO)
          
          # 数据库sql日志
          def sql_log(sql: str, *args, **kwargs):
              """
              打印sql语句日志
              """
              logger.info('SQL: ' + sql)
              logger.info('SQL ARGS: ' + str(args or kwargs))
          
          
          # tests/conftest.py
          """
          测试时设置日志系统
          """
          import logging
          import pytest
          
          from utils.log import sql_log
          
          @pytest.fixture
          def set_log():
              """
              设置日志系统
              """
              logging.basicConfig(level=logging.INFO)
              logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
              logging.getLogger("sqlalchemy.pool").setLevel(logging.INFO)
              logging.getLogger("sqlalchemy.dialects.postgresql").setLevel(logging.INFO)
          
              from models.base import engine
              engine.echo = True
              engine.logger.setLevel(logging.INFO)
              engine.echo = False
              engine.logger.removeHandler(engine.logger.handlers[0])
              engine.logger.addHandler(logging.StreamHandler())
              engine.logger.addHandler(logging.FileHandler('log/sql.log'))
              engine.logger.info('SQL LOG ENABLED')
              engine.logger.info('='*80)
              engine.logger.info('')
              engine.log_pool_stats = True
              engine.logger.setLevel(logging.INFO)
              engine.logger.info('='*80)
              engine.logger.info('')
              engine.logger.info('SQL LOG DISABLED')
              engine.log_statement = sql_log
          
          

          在测试文件中,重写sql_log,并在测试前后调用set_log来打印sql日志

          # tests/test_user.py
          """
          用户模块单元测试
          """
          import json
          
          from fastapi.testclient import TestClient
          
          from app.main import app
          from models.user import User
          
          client = TestClient(app)
          
          def test_create_user(set_log):
              """
              测试创建用户
              """
              response = client.post("/users/",
                  data=json.dumps({"username": "test_user", "password": "test_pass"}),
                  headers={"Content-Type": "application/json"}
              )
              assert response.status_code == 200
              response_json = response.json()
              assert response_json["username"] == "test_user"
              assert response_json["password"] == "test_pass"
          
              user = User.get_by_username("test_user")
              assert user.username == "test_user"
          
          

          运行测试时,在sql.log中可以看到数据库操作的日志:

          2020-09-14 10:44:41,111 INFO SQL: SELECT users.id AS users_id, users.username AS users_username, users.password AS users_password 
          FROM users 
          WHERE users.username = %(username_1)s
          2020-09-14 10:44:41,111 INFO SQL ARGS: {'username_1': 'test_user'}
          2020-09-14 10:44:41,111 INFO SQL: INSERT INTO users (username, password) VALUES (%(username)s, %(password)s) RETURNING users.id
          2020-09-14 10:44:41,111 INFO SQL ARGS: {'password': 'test_pass', 'username': 'test_user'}
          
          ? 该用户来自本论坛之外
          ? 该用户来自本论坛之外
          游客
          写于 最后由 编辑
          #1866

          @ChatGPT FastAPI日志系统,打印sqlalchemy执行过程中的每次sql语句

          ChatGPTC 1 条回复 最后回复
          0
          • ? 游客

            @ChatGPT FastAPI日志系统,打印sqlalchemy执行过程中的每次sql语句

            ChatGPTC 离线
            ChatGPTC 离线
            ChatGPT
            写于 最后由 编辑
            #1867

            guest说:

            FastAPI日志系统,打印sqlalchemy执行过程中的每次sql语句

            使用fastapi_sqlalchemy提供的SQLAlchemyMiddleware类,可以在每次sql语句执行的时候,自动记录到FastAPI的日志系统中:

            from fastapi_sqlalchemy import SQLAlchemyMiddleware
            
            # 初始化SQLAlchemyMiddleware
            sqlalchemy_middleware = SQLAlchemyMiddleware()
            
            # 将SQLAlchemyMiddleware绑定到app上
            app.add_middleware(sqlalchemy_middleware)
            

            每次sql执行完成后,就会在FastAPI日志系统中记录下sql语句:

            INFO:     SELECT users.id AS users_id
                      FROM users
                      ORDER BY users.id ASC
            

            帖子内容中 @ChatGPT(注意前后空格,发帖后名称变色才行)。必须@才会回答

            ? 3 条回复 最后回复
            0
            • ChatGPTC ChatGPT

              guest说:

              FastAPI日志系统,打印sqlalchemy执行过程中的每次sql语句

              使用fastapi_sqlalchemy提供的SQLAlchemyMiddleware类,可以在每次sql语句执行的时候,自动记录到FastAPI的日志系统中:

              from fastapi_sqlalchemy import SQLAlchemyMiddleware
              
              # 初始化SQLAlchemyMiddleware
              sqlalchemy_middleware = SQLAlchemyMiddleware()
              
              # 将SQLAlchemyMiddleware绑定到app上
              app.add_middleware(sqlalchemy_middleware)
              

              每次sql执行完成后,就会在FastAPI日志系统中记录下sql语句:

              INFO:     SELECT users.id AS users_id
                        FROM users
                        ORDER BY users.id ASC
              
              ? 该用户来自本论坛之外
              ? 该用户来自本论坛之外
              游客
              写于 最后由 编辑
              #1868

              @ChatGPT FastAPI日志系统结合sqlalchemy使用

              ChatGPTC 1 条回复 最后回复
              0
              • ? 游客

                @ChatGPT FastAPI日志系统结合sqlalchemy使用

                ChatGPTC 离线
                ChatGPTC 离线
                ChatGPT
                写于 最后由 编辑
                #1869

                guest说:

                FastAPI日志系统结合sqlalchemy使用

                FastAPI是一个支持快速开发和部署的Web框架,可以用来构建RESTful API。它拥有强大的日志系统,可以帮助开发者记录和监控应用程序的运行情况。

                要在FastAPI中使用SQLAlchemy,您需要将SQLAlchemy与FastAPI的日志系统结合使用。SQLAlchemy提供一个强大的ORM,它可以帮助您更轻松地管理数据库中的数据。

                要使SQLAlchemy与FastAPI的日志系统结合起来,您需要创建一个FastAPI的logger,它将负责记录日志信息。您可以在FastAPI的配置文件中设置logger,以指定日志记录的格式和级别。

                接下来,您需要将SQLAlchemy附加到FastAPI的logger中。可以通过设置SQLAlchemy的日志级别来实现这一点。SQLAlchemy支持多个日志级别,包括debug,info,warning,error和critical。您可以设置SQLAlchemy的日志级别,以便它只记录您感兴趣的日志信息。

                最后,您需要将SQLAlchemy的日志处理器附加到FastAPI的logger中。这样,SQLAlchemy日志信息就会被记录到FastAPI的日志中,从而使您可以更轻松地监控应用程序的运行情况。

                通过将SQLAlchemy与FastAPI的日志系统结合起来,您可以更轻松地管理数据库中的数据,并且可以更好地监控应用程序的运行情况。

                帖子内容中 @ChatGPT(注意前后空格,发帖后名称变色才行)。必须@才会回答

                ? 1 条回复 最后回复
                0
                • ChatGPTC ChatGPT

                  guest说:

                  FastAPI日志系统结合sqlalchemy使用

                  FastAPI是一个支持快速开发和部署的Web框架,可以用来构建RESTful API。它拥有强大的日志系统,可以帮助开发者记录和监控应用程序的运行情况。

                  要在FastAPI中使用SQLAlchemy,您需要将SQLAlchemy与FastAPI的日志系统结合使用。SQLAlchemy提供一个强大的ORM,它可以帮助您更轻松地管理数据库中的数据。

                  要使SQLAlchemy与FastAPI的日志系统结合起来,您需要创建一个FastAPI的logger,它将负责记录日志信息。您可以在FastAPI的配置文件中设置logger,以指定日志记录的格式和级别。

                  接下来,您需要将SQLAlchemy附加到FastAPI的logger中。可以通过设置SQLAlchemy的日志级别来实现这一点。SQLAlchemy支持多个日志级别,包括debug,info,warning,error和critical。您可以设置SQLAlchemy的日志级别,以便它只记录您感兴趣的日志信息。

                  最后,您需要将SQLAlchemy的日志处理器附加到FastAPI的logger中。这样,SQLAlchemy日志信息就会被记录到FastAPI的日志中,从而使您可以更轻松地监控应用程序的运行情况。

                  通过将SQLAlchemy与FastAPI的日志系统结合起来,您可以更轻松地管理数据库中的数据,并且可以更好地监控应用程序的运行情况。

                  ? 该用户来自本论坛之外
                  ? 该用户来自本论坛之外
                  游客
                  写于 最后由 编辑
                  #1870

                  @ChatGPT FastAPI配置日志

                  ChatGPTC 1 条回复 最后回复
                  0
                  • ? 游客

                    @ChatGPT FastAPI配置日志

                    ChatGPTC 离线
                    ChatGPTC 离线
                    ChatGPT
                    写于 最后由 编辑
                    #1871

                    guest说:

                    FastAPI配置日志

                    1. 安装starlette日志插件:
                    pip install starlette-logging
                    
                    1. 在main.py中导入插件:
                    from starlette_logging import LoggingMiddleware
                    
                    1. 配置日志:
                    import logging
                    
                    logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(name)s:%(message)s')
                    
                    app.add_middleware(LoggingMiddleware)
                    
                    1. 将以上配置应用到FastAPI应用中:
                    app = FastAPI(title="My App", debug=True)
                    
                    # 配置日志
                    import logging
                    
                    logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(name)s:%(message)s')
                    
                    app.add_middleware(LoggingMiddleware)
                    
                    # 其他FastAPI配置
                    
                    @app.get("/")
                    def read_root():
                        return {"Hello": "World"}
                    
                    1. 运行应用:
                    uvicorn main:app
                    
                    1. 运行结果:
                    INFO:     Started server process [23866]
                    INFO:     Waiting for application startup.
                    INFO:     Application startup complete.
                    INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
                    

                    帖子内容中 @ChatGPT(注意前后空格,发帖后名称变色才行)。必须@才会回答

                    1 条回复 最后回复
                    0
                    • ChatGPTC ChatGPT

                      guest说:

                      FastAPI日志系统,打印sqlalchemy执行过程中的每次sql语句

                      使用fastapi_sqlalchemy提供的SQLAlchemyMiddleware类,可以在每次sql语句执行的时候,自动记录到FastAPI的日志系统中:

                      from fastapi_sqlalchemy import SQLAlchemyMiddleware
                      
                      # 初始化SQLAlchemyMiddleware
                      sqlalchemy_middleware = SQLAlchemyMiddleware()
                      
                      # 将SQLAlchemyMiddleware绑定到app上
                      app.add_middleware(sqlalchemy_middleware)
                      

                      每次sql执行完成后,就会在FastAPI日志系统中记录下sql语句:

                      INFO:     SELECT users.id AS users_id
                                FROM users
                                ORDER BY users.id ASC
                      
                      ? 该用户来自本论坛之外
                      ? 该用户来自本论坛之外
                      游客
                      写于 最后由 编辑
                      #1872

                      @ChatGPT SQLAlchemyMiddleware详细使用方法,绑定main.py

                      ChatGPTC 1 条回复 最后回复
                      0
                      • ? 游客

                        @ChatGPT SQLAlchemyMiddleware详细使用方法,绑定main.py

                        ChatGPTC 离线
                        ChatGPTC 离线
                        ChatGPT
                        写于 最后由 编辑
                        #1873

                        guest说:

                        SQLAlchemyMiddleware详细使用方法,绑定main.py

                        SQLAlchemyMiddleware是一个Flask中间件,它可以帮助我们在Flask应用程序中使用SQLAlchemy。它的核心功能是在每次请求期间管理SQLAlchemy会话。

                        要使用SQLAlchemyMiddleware,首先我们需要安装它:

                        $ pip install Flask-SQLAlchemy-Session

                        接下来,我们可以在main.py文件中绑定中间件:

                        from flask import Flask
                        from flask_sqlalchemy_session import SQLAlchemySessionMiddleware

                        app = Flask(name)

                        Bind the middleware

                        app.wsgi_app = SQLAlchemySessionMiddleware(app.wsgi_app)

                        然后,我们可以使用SQLAlchemyMiddleware的方法来完成一些任务,比如添加一个新的会话:

                        Add a new session

                        from sqlalchemy_session import Session
                        session = Session()
                        session.add(app)

                        Close the session when done

                        @app.teardown_appcontext
                        def close_session(exception=None):
                        session.remove()

                        这样,我们就可以在Flask应用程序中使用SQLAlchemy了。

                        帖子内容中 @ChatGPT(注意前后空格,发帖后名称变色才行)。必须@才会回答

                        1 条回复 最后回复
                        0
                        • ChatGPTC ChatGPT

                          guest说:

                          FastAPI日志系统,打印sqlalchemy执行过程中的每次sql语句

                          使用fastapi_sqlalchemy提供的SQLAlchemyMiddleware类,可以在每次sql语句执行的时候,自动记录到FastAPI的日志系统中:

                          from fastapi_sqlalchemy import SQLAlchemyMiddleware
                          
                          # 初始化SQLAlchemyMiddleware
                          sqlalchemy_middleware = SQLAlchemyMiddleware()
                          
                          # 将SQLAlchemyMiddleware绑定到app上
                          app.add_middleware(sqlalchemy_middleware)
                          

                          每次sql执行完成后,就会在FastAPI日志系统中记录下sql语句:

                          INFO:     SELECT users.id AS users_id
                                    FROM users
                                    ORDER BY users.id ASC
                          
                          ? 该用户来自本论坛之外
                          ? 该用户来自本论坛之外
                          游客
                          写于 最后由 编辑
                          #1874

                          @ChatGPT DBSessionMiddleware.init() missing 1 required positional argument: 'app'

                          ChatGPTC ? 2 条回复 最后回复
                          0
                          • ? 游客

                            @ChatGPT DBSessionMiddleware.init() missing 1 required positional argument: 'app'

                            ChatGPTC 离线
                            ChatGPTC 离线
                            ChatGPT
                            写于 最后由 编辑
                            #1875

                            guest说:

                            DBSessionMiddleware.init() missing 1 required positional argument: 'app'

                            DBSessionMiddleware is a class for which you must supply an app argument when initializing it.
                            The app argument should be a web application object, such as a Flask application. This class is used to manage database sessions in a web application.

                            帖子内容中 @ChatGPT(注意前后空格,发帖后名称变色才行)。必须@才会回答

                            1 条回复 最后回复
                            0
                            • ? 游客

                              @ChatGPT DBSessionMiddleware.init() missing 1 required positional argument: 'app'

                              ? 该用户来自本论坛之外
                              ? 该用户来自本论坛之外
                              游客
                              写于 最后由 编辑
                              #1876

                              @ChatGPT 解决下DBSessionMiddleware.init() missing 1 required positional argument: 'app' 这个报错问题

                              ChatGPTC 1 条回复 最后回复
                              0
                              • ? 游客

                                @ChatGPT 解决下DBSessionMiddleware.init() missing 1 required positional argument: 'app' 这个报错问题

                                ChatGPTC 离线
                                ChatGPTC 离线
                                ChatGPT
                                写于 最后由 编辑
                                #1877

                                guest说:

                                解决下DBSessionMiddleware.init() missing 1 required positional argument: 'app' 这个报错问题

                                DBSessionMiddleware的构造函数中需要传入一个参数app,表示被包装的应用对象,可以在使用DBSessionMiddleware时传入这个参数。

                                帖子内容中 @ChatGPT(注意前后空格,发帖后名称变色才行)。必须@才会回答

                                1 条回复 最后回复
                                0
                                • W 离线
                                  W 离线
                                  WenJike
                                  🍌
                                  写于 最后由 编辑
                                  #1878

                                  你觉得三体这本书怎么样

                                  1 条回复 最后回复
                                  0
                                  • ChatGPTC ChatGPT

                                    guest说:

                                    FastAPI引入日志系统,每次对数据库的操作都会打印sql日志

                                    # utils/log.py
                                    """
                                    封装FastAPI的日志系统
                                    """
                                    import logging
                                    
                                    from fastapi.logger import logger
                                    
                                    logger.add(
                                        logger.file("log/app.log", format="{time} {level} {message}", rotation="1 day", retention="7 days"),
                                        level="INFO"
                                    )
                                    
                                    # 日志等级
                                    logging.basicConfig(level=logging.INFO)
                                    
                                    # 数据库sql日志
                                    def sql_log(sql: str, *args, **kwargs):
                                        """
                                        打印sql语句日志
                                        """
                                        logger.info('SQL: ' + sql)
                                        logger.info('SQL ARGS: ' + str(args or kwargs))
                                    
                                    
                                    # tests/conftest.py
                                    """
                                    测试时设置日志系统
                                    """
                                    import logging
                                    import pytest
                                    
                                    from utils.log import sql_log
                                    
                                    @pytest.fixture
                                    def set_log():
                                        """
                                        设置日志系统
                                        """
                                        logging.basicConfig(level=logging.INFO)
                                        logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
                                        logging.getLogger("sqlalchemy.pool").setLevel(logging.INFO)
                                        logging.getLogger("sqlalchemy.dialects.postgresql").setLevel(logging.INFO)
                                    
                                        from models.base import engine
                                        engine.echo = True
                                        engine.logger.setLevel(logging.INFO)
                                        engine.echo = False
                                        engine.logger.removeHandler(engine.logger.handlers[0])
                                        engine.logger.addHandler(logging.StreamHandler())
                                        engine.logger.addHandler(logging.FileHandler('log/sql.log'))
                                        engine.logger.info('SQL LOG ENABLED')
                                        engine.logger.info('='*80)
                                        engine.logger.info('')
                                        engine.log_pool_stats = True
                                        engine.logger.setLevel(logging.INFO)
                                        engine.logger.info('='*80)
                                        engine.logger.info('')
                                        engine.logger.info('SQL LOG DISABLED')
                                        engine.log_statement = sql_log
                                    
                                    

                                    在测试文件中,重写sql_log,并在测试前后调用set_log来打印sql日志

                                    # tests/test_user.py
                                    """
                                    用户模块单元测试
                                    """
                                    import json
                                    
                                    from fastapi.testclient import TestClient
                                    
                                    from app.main import app
                                    from models.user import User
                                    
                                    client = TestClient(app)
                                    
                                    def test_create_user(set_log):
                                        """
                                        测试创建用户
                                        """
                                        response = client.post("/users/",
                                            data=json.dumps({"username": "test_user", "password": "test_pass"}),
                                            headers={"Content-Type": "application/json"}
                                        )
                                        assert response.status_code == 200
                                        response_json = response.json()
                                        assert response_json["username"] == "test_user"
                                        assert response_json["password"] == "test_pass"
                                    
                                        user = User.get_by_username("test_user")
                                        assert user.username == "test_user"
                                    
                                    

                                    运行测试时,在sql.log中可以看到数据库操作的日志:

                                    2020-09-14 10:44:41,111 INFO SQL: SELECT users.id AS users_id, users.username AS users_username, users.password AS users_password 
                                    FROM users 
                                    WHERE users.username = %(username_1)s
                                    2020-09-14 10:44:41,111 INFO SQL ARGS: {'username_1': 'test_user'}
                                    2020-09-14 10:44:41,111 INFO SQL: INSERT INTO users (username, password) VALUES (%(username)s, %(password)s) RETURNING users.id
                                    2020-09-14 10:44:41,111 INFO SQL ARGS: {'password': 'test_pass', 'username': 'test_user'}
                                    
                                    ? 该用户来自本论坛之外
                                    ? 该用户来自本论坛之外
                                    游客
                                    写于 最后由 编辑
                                    #1879

                                    @ChatGPT FastAPI引入日志系统,每次对数据库的操作都会打印sql日志并且列出目录结构

                                    ChatGPTC 1 条回复 最后回复
                                    0
                                    • ? 游客

                                      @ChatGPT FastAPI引入日志系统,每次对数据库的操作都会打印sql日志并且列出目录结构

                                      ChatGPTC 离线
                                      ChatGPTC 离线
                                      ChatGPT
                                      写于 最后由 编辑
                                      #1880

                                      guest说:

                                      FastAPI引入日志系统,每次对数据库的操作都会打印sql日志并且列出目录结构

                                      首先,需要在FastAPI中安装SQLAlchemy,SQLAlchemy是一种数据库抽象层,可以让你在不同数据库之间进行数据库操作:

                                      pip install SQLAlchemy
                                      

                                      然后,需要在FastAPI中引入logging模块,并设置日志级别:

                                      import logging
                                      logging.basicConfig(level=logging.INFO)
                                      

                                      接着,需要创建一个logger对象,并为其添加一个文件处理器,以便将日志记录到文件中:

                                      logger = logging.getLogger('sqlalchemy.engine')
                                      fh = logging.FileHandler('sql.log')
                                      logger.addHandler(fh)
                                      

                                      最后,需要设置日志级别,以便记录SQL查询:

                                      logger.setLevel(logging.INFO)
                                      

                                      这样,每次对数据库的操作都会在sql.log文件中记录下来,并且可以查看每一条SQL查询的目录结构。

                                      帖子内容中 @ChatGPT(注意前后空格,发帖后名称变色才行)。必须@才会回答

                                      ? 1 条回复 最后回复
                                      0
                                      • ChatGPTC ChatGPT

                                        guest说:

                                        FastAPI引入日志系统,每次对数据库的操作都会打印sql日志并且列出目录结构

                                        首先,需要在FastAPI中安装SQLAlchemy,SQLAlchemy是一种数据库抽象层,可以让你在不同数据库之间进行数据库操作:

                                        pip install SQLAlchemy
                                        

                                        然后,需要在FastAPI中引入logging模块,并设置日志级别:

                                        import logging
                                        logging.basicConfig(level=logging.INFO)
                                        

                                        接着,需要创建一个logger对象,并为其添加一个文件处理器,以便将日志记录到文件中:

                                        logger = logging.getLogger('sqlalchemy.engine')
                                        fh = logging.FileHandler('sql.log')
                                        logger.addHandler(fh)
                                        

                                        最后,需要设置日志级别,以便记录SQL查询:

                                        logger.setLevel(logging.INFO)
                                        

                                        这样,每次对数据库的操作都会在sql.log文件中记录下来,并且可以查看每一条SQL查询的目录结构。

                                        ? 该用户来自本论坛之外
                                        ? 该用户来自本论坛之外
                                        游客
                                        写于 最后由 编辑
                                        #1881

                                        @ChatGPT 怎么用PS去除图片水印,列出详细操作步骤

                                        ChatGPTC 1 条回复 最后回复
                                        0
                                        • ? 游客

                                          @ChatGPT 怎么用PS去除图片水印,列出详细操作步骤

                                          ChatGPTC 离线
                                          ChatGPTC 离线
                                          ChatGPT
                                          写于 最后由 编辑
                                          #1882

                                          guest说:

                                          怎么用PS去除图片水印,列出详细操作步骤

                                          1. 打开PS,把带有水印的图片文件拖拽到PS的工作窗口中;

                                          2. 选择“变换”工具,按住Ctrl+T进行变换;

                                          3. 用鼠标拖动水印边缘,把水印拉大,使其准确的覆盖整个水印的区域;

                                          4. 按下“enter”键,选择“模糊”工具,模糊水印的边缘;

                                          5. 按住Ctrl+J,复制图层,叠加复制层,调节混合模式,调节不透明度,完成去水印;

                                          6. 按下Ctrl+S,另存为图片,完成图片去水印。

                                          帖子内容中 @ChatGPT(注意前后空格,发帖后名称变色才行)。必须@才会回答

                                          ? 1 条回复 最后回复
                                          0
                                          回复
                                          • 在新帖中回复
                                          登录后回复
                                          • 从旧到新
                                          • 从新到旧
                                          • 最多赞同


                                          • 1
                                          • 2
                                          • 133
                                          • 134
                                          • 135
                                          • 136
                                          • 137
                                          • 576
                                          • 577
                                          Popular Topics - 热门主题
                                          • Bug! Bug !Google One 学生优惠 可无门槛验证
                                            mztcM
                                            mztc
                                            3
                                            14
                                            5.1k

                                          • 中国科技云免费白嫖1 年 Cursor 使用权!快~~~
                                            D
                                            d914954480
                                            1
                                            7
                                            2.1k

                                          • MySQL 8.0 OCP 限时免费考
                                            HebutMrLiuH
                                            HebutMrLiu
                                            1
                                            5
                                            369

                                          • 免费科技代理流量巨多
                                            孤
                                            孤傲的王
                                            1
                                            4
                                            152

                                          • 阿里云国际站轻量应用服务器 2C+1G+200M带宽 仅9.9美元一年!
                                            T
                                            Test
                                            1
                                            4
                                            1.2k

                                          • 京东冲100明天送一张25-20外卖卷
                                            我是小马甲~M
                                            我是小马甲~
                                            1
                                            2
                                            709

                                          • 登录

                                          • 没有帐号? 注册

                                          • 登录或注册以进行搜索。
                                          百度网盘
                                          1,177 个主题
                                          连续剧
                                          699 个主题
                                          国产剧
                                          565 个主题
                                          美剧
                                          338 个主题
                                          中国移动
                                          307 个主题
                                          动画片
                                          231 个主题
                                          中国电信
                                          222 个主题
                                          动作片
                                          206 个主题

                                          132

                                          在线

                                          39.9k

                                          用户

                                          40.1k

                                          主题

                                          110.4k

                                          帖子
                                          • 第一个帖子
                                            最后一个帖子