我有一个带有架构参数的SqlAlchemy模型,如下所示:
Base = declarative_base()
class Road(Base):
__tablename__ = "roads"
__table_args__ = {'schema': 'my_schema'}
id = Column(Integer, primary_key=True)
Run Code Online (Sandbox Code Playgroud)
当我使用Base.metadata.create_all(engine)时,它正确地在前面发出一个带有模式名称的CREATE TABLE,就像这样"CREATE TABLE my_schema.roads("但Postgresql正确地抱怨模式不存在.
我错过了让SqlAlchemy发布CREATE SCHEMA my_schema的步骤,还是我必须手动调用它?
更新:
对于有此问题的任何人,使用最新的SQLAlchemy,此行为已得到修复.
原始问题:
我遇到了使关联代理正确更新的问题.
使用此处的示例模型:http://docs.sqlalchemy.org/en/rel_0_7/orm/extensions/associationproxy.html#simplifying-association-objects
但是使用以下行更改UserKeyword:
keyword = relationship("Keyword", backref=backref("user_keywords", cascade="all, delete-orphan"))
Run Code Online (Sandbox Code Playgroud)
并将其添加到关键字:
users = association_proxy('user_keywords', 'user')
Run Code Online (Sandbox Code Playgroud)
因此,关键字实例具有用户列表.
以下按预期工作:
>>> rory = User("rory")
>>> session.add(rory)
>>> chicken = Keyword('chicken')
>>> session.add(chicken)
>>> rory.keywords.append(chicken)
>>> chicken.users
[<__main__.User object at 0x1f1c0d0>]
>>> chicken.user_keywords
[<__main__.UserKeyword object at 0x1f1c450>]
Run Code Online (Sandbox Code Playgroud)
但删除做奇怪的事情.从关联代理列表中删除如下:
>>> rory.keywords.remove(chicken)
Run Code Online (Sandbox Code Playgroud)
SA尝试将其中一个外键列设置为null时,会导致完整性错误.
这样做:
>>> rory.user_keywords.remove(rory.user_keywords[0])
Run Code Online (Sandbox Code Playgroud)
结果如下:
>>> chicken.users
[None]
Run Code Online (Sandbox Code Playgroud)
我错过了一些显而易见的事情吗?
我有以下代码,我一直在188字节文件上使用:
std::ifstream is("filename", std::ios::binary);
std::vector<uint8_t> buffer;
std::istream_iterator<uint8_t> i_input(is);
std::copy(i_input, std::istream_iterator<uint8_t>(),
std::back_inserter(buffer));
std::cout << buffer.size();
Run Code Online (Sandbox Code Playgroud)
但是它只读取188个字节的186个字节.
我已经使用hexeditor确认了文件大小ls -al.
有没有人有一个好的tute /为视图编写好的测试的例子?我发现的大多数东西都是从2008年中期开始的,这只是一点帮助.