小编mar*_*and的帖子

如何修复SQLAlchemy:SAWarning:对表的DELETE语句应删除1行;0个被匹配

我正在使用SQLAlchemy和PostgreSQL构建带有定向图数据模型的Python Flask应用。我在设置删除级联时遇到问题。尽管经过初步检查似乎可以删除,但是我不确定是否可能以我不理解的方式破坏事物,因为我收到以下警告:

SAWarning: DELETE statement on table 'edges' expected to delete 1 row(s); 0 were matched.  
Please set confirm_deleted_rows=False within the mapper configuration to prevent this warning.  (table.description, expected,rows_matched)
Run Code Online (Sandbox Code Playgroud)

这是我的数据模型的核心。

class Node(db.Model):
    __tablename__ = 'nodes'

    __mapper_args__ = {
        'polymorphic_on': type,
        'polymorphic_identity': 'node'
    }

    id = Column(BigInteger, primary_key=True)
    type = Column(String)

    in_edges = relationship("Edge", cascade="save-update, merge, delete", foreign_keys="Edge.dest", back_populates='dest_node')
    out_edges = relationship("Edge", cascade="save-update, merge, delete", foreign_keys="Edge.src", back_populates='src_node')


class Edge(db.Model):
    __tablename__ = 'edges'

    __mapper_args__ = {
        'polymorphic_on': type,
        'polymorphic_identity': 'edge'
    }

    type …
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy flask flask-sqlalchemy

5
推荐指数
1
解决办法
2653
查看次数

当心悬空的 -Xfrontend:(Xcode:存档失败,但为模拟器和设备构建并运行)

尝试存档我的应​​用程序失败,并出现以下错误:

<unknown>:0: error: cannot load underlying module for 'CoreFoundation'
Run Code Online (Sandbox Code Playgroud)

该项目在模拟器和我的 iPhone 上构建并运行,并针对“通用 iOS 设备”构建。

我在项目中改变的一件大事是如何集成 GooglePlaces 和 GoogleMaps。以前,我一直在使用一种被黑客攻击的迦太基集成方法,但在存档时开始无法构建,尽管在所有其他场景中再次运行良好。

因此,我删除了 Carthage 集成,并按照 Google 规定的方式手动集成它,其中涉及在构建阶段添加各种框架Link Binary With Libraries。CoreFoundation 不是其中之一,但包含它并不能解决问题。

有任何想法吗?

xcode ios swift

5
推荐指数
1
解决办法
1785
查看次数

跨多个SQLAlchemy多对多查询

我正在使用SQLAlchemy为以下概念建模:

  • 用户可以是member_of一个组
  • 一个组可以有多个用户,members并且可以提供access_to多个用户Nodes
  • 一个节点可以是accessed_by多个Groups

我正在使用关联表模式为用户->组和节点->组创建多对多关系。

下面的代码(我正在使用Flask-SQLAlchemy,这就是为什么我有db.Model等的原因)

如何查询用户所属的所有组均可访问的所有节点?

这是对象模型

group_access = Table('access', db.metadata,
                     Column('group_id', Integer, ForeignKey('groups.group_id')),
                     Column('nid', BigInteger, ForeignKey('nodes.nid')),
                     )

group_membership = Table('membership', db.metadata,
                         Column('group_id', Integer, ForeignKey('groups.group_id')),
                         Column('uid', Integer, ForeignKey('users.id')),
                         )

edges = Table('edges', db.metadata,
              Column('src_id', BigInteger, ForeignKey('nodes.nid'), primary_key=True),
              Column('dest', BigInteger, ForeignKey('nodes.nid'), primary_key=True),
              )


class User(db.Model):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    email = Column(String, unique=True, nullable=False)
    member_of = relationship("Group", secondary=group_membership, back_populates='members')

    def __init__(self, email):
        self.email = email


class …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

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

locationManager didEnterRegion未在XCode 9 Simulator中调用

我有一个做地理围栏的应用程序.当我在模拟器(Xcode 8.3.3和Xcode 9)中运行它时,一切似乎都有效,但我的CLLocationManager didEnterRegion永远不会被调用.

当我在iPhone上运行应用程序时,无论是在现实世界中(进入某个区域)还是在Xcode中通过位置模拟运行,它都被称为正常.

知道为什么会这样吗?

我发现的一个区别是模拟器在使用时只支持监控位置,所以我必须设置好所以我的plist文件中有两个权限字符串,但除此之外我感到难过.

由于我不提供代码(它太复杂并且在我的应用程序中分发),让我注意一下模拟器中的工作原理:

  1. 在我的应用程序方案中,我选中了"允许位置模拟",并且我已经为我正在监控的位置添加了几个.gpx文件.我有一个默认的位置设置.

  2. 我启动时会调用我的位置管理器代理.我得到了.在模拟器中使用了授权者,然后在电话上使用了.

  3. 当位置发生变化时,将调用locationManager(:didUpdateLocations :).

  4. 当调用didUpdateLocations时,我会执行以下操作:

    for r in manager.monitoredRegions { 
        if let cr = r as? CLCircularRegion {
            if cr.contains(location.coordinate) {
                log.debug("Am in the region!")
            } else {
                let crLoc = CLLocation(latitude: cr.center.latitude,
                                      longitude: cr.center.longitude)
                log.debug("distance is: \(location.distance(from: crLoc))")
            }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    它的工作原理.所以我的地区受到监控,我的位置就是我认为应该的位置.

  5. 最后,没有调用我的locationManager委托的monitoringDidFailFor和didFailWithError.并非他们从来没有 - 他们在开发过程中,但现在不是.

所以我很难过.再次,它在手机上工作正常,而不是在模拟器中.

我究竟做错了什么?

xcode cllocationmanager ios ios-simulator swift

0
推荐指数
1
解决办法
2554
查看次数