小编Aug*_*Bar的帖子

SQLAlchemy中抽象类Model和Mixin的区别

SQLAlchemy 中的 Mixin 可用于在模型之间共享功能和属性。但据我了解,它还实现了使用抽象类的继承。所以我的问题是以下两种实现之间有什么区别:

使用抽象模型:

from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.ext.declarative import declared_attr,

db = SQLAlchemy()

class BaseModel(db.Model):
    __abstract__ = True

    @declared_attr
    def iid(cls):
        return db.Column(
            UUID(as_uuid=True),
            primary_key=True,
            default=uuid.uuid4,
            unique=True,
            nullable=False,
        )

    @declared_attr
    def created_on(cls):
        return db.Column(db.DateTime, server_default=db.func.now())

    @declared_attr
    def updated_on(cls):
        return db.Column(
            db.DateTime, server_default=db.func.now(), server_onupdate=db.func.now()
        )

    def save(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()


class SomeEntity(BaseModel):
     some_field = db.Column(db.String)
Run Code Online (Sandbox Code Playgroud)

使用混合:

from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.ext.declarative import declared_attr,

db = SQLAlchemy()

class Mixin(object):
    @declared_attr
    def iid(cls):
        return db.Column(
            UUID(as_uuid=True), …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask-sqlalchemy

7
推荐指数
0
解决办法
508
查看次数

列表属性上的 SQLAlchemy 过滤器

我使用 Flask-SQLAlchemy 定义了以下模型:

"""models.py"""

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

skill_candidate = db.Table(
    'SkillCandidate',
    db.Column('skill_id', db.String, db.ForeignKey('skill.id')),
    db.Column('candidate_id', db.Integer, db.ForeignKey('candidate.id')))

class Candidate(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    skills = db.relationship("Skill", secondary=skill_candidate)

class Skill(db.Model):
    id = db.Column(db.String, primary_key=True)
    name = db.Column(db.String, nullable=False, unique=True)
Run Code Online (Sandbox Code Playgroud)

我想要实现的是以下内容:我想返回所有拥有列表输入中提供的技能的候选人(甚至理想情况下,skill_id 列表)

我尝试了以下方法:

def get_skilled_candidates(skill_ids):
    return Candidate.query.join(skill_candidate).\
       filter(and_(*[skill_candidate.c.skill_id == skill_id for skill_id in skill_ids])).\
            all()

Run Code Online (Sandbox Code Playgroud)

目的是过滤每项技能的所有候选人,并用 and_ 语句编写它

如果我使用 1 个项目的列表(它返回所有拥有该技能的候选人),但如果我在输入列表中添加更多技能,则效果很好(即使我有符合条件的候选人)

python sqlalchemy flask-sqlalchemy

5
推荐指数
2
解决办法
7039
查看次数

剧作家强制点击隐藏元素不起作用

我正在使用 Playwright 进行端到端测试。其中一种场景涉及检查 PDFviewer 窗口中显示的 pdf 内容,该窗口的下载按钮已对最终用户隐藏。检查 pdf 内容需要下载它,因此我使用\nforce文档提到的选项:\n https://playwright.dev/docs/api/class-page#page-click

\n

使用的实现如下:

\n
innerFrameContent.click("//button[contains(@id, \'secondaryDownload\')]", { force: true })\n
Run Code Online (Sandbox Code Playgroud)\n

(xpath是正确的,我在Chrome浏览器中检查并设法通过控制台单击该元素)

\n

不幸的是,我从 Playwright 收到以下异常日志:

\n
frame.click: Element is not visible\n=========================== logs ===========================\nwaiting for selector "//button[contains(@id, \'secondaryDownload\')]"\n  selector resolved to hidden <button tabindex="54" title="Download" id="secondaryDown\xe2\x80\xa6>\xe2\x80\xa6</button>\nattempting click action\n  waiting for element to be visible, enabled and stable\n    forcing action\n  element is visible, enabled and stable\n  scrolling into view if needed\n============================================================\n...\n
Run Code Online (Sandbox Code Playgroud)\n

javascript node.js playwright

4
推荐指数
1
解决办法
2万
查看次数

无法在 Elastic Beanstalk 上部署节点:命令“/bin/sh -c npm install”返回非零代码:1

我正在使用 AWS 的 Elastic beanstalk 来部署和托管使用 Docker 的 React 应用程序。

尽管我在本地计算机上成功构建了 Docker 映像,但部署却神秘地失败了。对 EC2 实例上的日志进行检查(使用eb ssh)并没有提供更多解释:

--------------------------------
/var/log/eb-commandprocessor.log
--------------------------------
Step 5/14 : COPY package.json /usr/src/app/package.json
---> Using cache
---> f06f2c9d6519
Step 6/14 : RUN npm install
---> Running in 9926fc11431f
The command '/bin/sh -c npm install' returned a non-zero code: 1
Failed to build Docker image aws_beanstalk/staging-app: 2c9d6519
Run Code Online (Sandbox Code Playgroud)

npm install我什至尝试使用以下命令在构建容器的最后一层内运行命令

sudo docker commit 9926fc11431f test && docker run -it test bash
cd /path/to/wordir
npm install 
Run Code Online (Sandbox Code Playgroud)

但返回码实际上是0

还有其他方法可能会失败并且日志返回错误的错误吗?

docker reactjs amazon-elastic-beanstalk

3
推荐指数
1
解决办法
585
查看次数