小编bar*_*kin的帖子

sqlalchemy:如何通过一个查询连接多个表?

我有以下SQLAlchemy映射类:

class User(Base):
    __tablename__ = 'users'
    email = Column(String, primary_key=True)
    name = Column(String)

class Document(Base):
    __tablename__ = "documents"
    name = Column(String, primary_key=True)
    author = Column(String, ForeignKey("users.email"))

class DocumentsPermissions(Base):
    __tablename__ = "documents_permissions"
    readAllowed = Column(Boolean)
    writeAllowed = Column(Boolean)

    document = Column(String, ForeignKey("documents.name"))
Run Code Online (Sandbox Code Playgroud)

我需要得到一个这样的表user.email = "user@email.com":

email | name | document_name | document_readAllowed | document_writeAllowed
Run Code Online (Sandbox Code Playgroud)

如何使用SQLAlchemy的一个查询请求?以下代码对我不起作用:

result = session.query(User, Document, DocumentPermission).filter_by(email = "user@email.com").all()
Run Code Online (Sandbox Code Playgroud)

谢谢,

python sql join sqlalchemy

83
推荐指数
4
解决办法
11万
查看次数

g ++中共享C++库之间的异常

据我所知,在C++ STD中没有定义(未定义的行为),当一个共享库在另一个共享库中引发异常时,编译的应用程序应该如何处理这种情况[共享库].G ++/Linux生成的代码表明可以在共享库之间引发异常.

我的问题是:

  1. 它是便携式的(MSVS)吗?
  2. 在哪种情况下共享库A将无法处理共享库中的异常B?[我的意思是申请会崩溃; 图书馆A知道可能的例外情况B.
  3. 我的示例中的异常处理行为是否依赖于链接器?

c++ linux g++ exception shared-libraries

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

方法在C++中继承时重载

我有遗留代码:

struct Iface1
{
  virtual ~Iface1() {}
  virtual void foo(const int arg1) const = 0;
};

struct Iface2
{
  virtual ~Iface2() {}
  virtual void foo(const int arg1, const int arg2) const = 0;
};

/// Composite interface
struct Iface12 : Iface1, Iface2
{
};
Run Code Online (Sandbox Code Playgroud)

我需要为复合接口创建一个装饰器.以下代码甚至没有编译,因为G ++和MSVC推断调用哪种类型的foo()是"模糊的".可以请任何人指出如何使下面的代码编译和工作?(不幸的是,我没有时间进行重构).

我甚至不明白为什么编译器无法推断出要调用的函数,因为所有函数签名都是显式的.谢谢.

struct IfaceDecorator : Iface12
{
  IfaceDecorator(Iface12& iface) : impl(iface) {}

  virtual void foo(const int arg1) const
  {
    impl.foo(arg1);
  }

 virtual void foo(const int arg1, const int arg2) const
 {
   impl.foo(arg1, arg2);
 }

private: …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance overloading

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

C++中内置类型的const修饰符的开销

我更喜欢const在我编写的函数中为所有内置参数添加修饰符.例如:

void foo(const int arg1, const double arg2);
Run Code Online (Sandbox Code Playgroud)

对我来说比以下更好:

void foo(int arg1, double arg2);
Run Code Online (Sandbox Code Playgroud)

在代码审查之后,我被告知const修饰符在应用于整数和内置类型时会带来开销.这是真的吗?为什么?

谢谢,

c++ const overhead

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

为什么在setq()时LISP中没有出现关于未定义变量的错误?

在我的Emacs配置中,我有这样一个字符串:

(setq ibuffer-saved-filter-groups
  (quote (("default"
           ("dired"
            (mode . dired-mode))
           ("System"
            (or (name . "\*scratch\*")
                (name . "\*Messages\*")))
           ("SVN"
            (name . "^\\*vc-.*\\*$"))))))
Run Code Online (Sandbox Code Playgroud)

变量namemode未定义但代码被正确评估.当我尝试自己做这样的时候:

(some-var . "some-value")
Run Code Online (Sandbox Code Playgroud)

我收到有关未定义变量的错误some-var.

lisp emacs

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

为什么使用cons()和list()创建的列表的显示方式不同?

尽管列表相同,为什么使用cons()和list()创建的列表显示不同?第一个显示由点分隔的项目,但第二个显示没有.

> (cons 1 2)
(1 . 2)

> '(1 2)
(1 2)
Run Code Online (Sandbox Code Playgroud)

我知道cons构造点缀对,但在这种情况下列表是相同的,但显示不同.

lisp list

0
推荐指数
2
解决办法
101
查看次数

可能是在C++中被视为"正在堆栈"的堆上创建的对象?

有代码:

struct FooBar
{
  FooBar()
  {
    MyObject obj;

    /// when c-tor is ended, obj must be deleted through d-tor call
  }
};
...
FooBar* fooBar(new FooBar);
Run Code Online (Sandbox Code Playgroud)

fooBar在堆上分配.但是对象MyObject obj里面FooBar的构造函数不知道它的创建位置.那么可以在被处理MyObject的上下文中实例化FooBar它就像在堆栈中创建的那样?

堆上分配的对象是否有自己的堆栈?这种堆栈的大小是多少?

c++ heap stack memory-management

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

为什么在g ++中缺少虚拟d-tor不会破坏派生类的堆栈分配成员?

我有以下代码:

struct Message
{
   explicit Message(const std::string& message) : selfMessage(message) {};
   ~Message() { std::cerr << "Message: " << selfMessage << std::endl; }
   const std::string selfMessage;
};

struct Foo
{
   Foo() : fooMessage("Foo") {}
   /// Destructor here is left intentionally non-virtual !!!
   ~Foo() { std::cerr << "~Foo" << std::endl; }

   Message fooMessage;
};

struct Bar : Foo
{
   Bar() : barMessage("Bar") {}
   ~Bar() { std::cerr << "~Bar" << std::endl; }
   Message barMessage;
};

int main()
{
  std::auto_ptr<Foo> foo(new Bar);
}
Run Code Online (Sandbox Code Playgroud)

我期待以下输出: …

c++ virtual-destructor

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