小编asc*_*bol的帖子

如何使用sqlalchemy有效管理频繁的架构更改?

我正在使用sqlalchemy编写Web应用程序.在网站未投入生产的第一阶段开发期间,一切顺利.我可以通过简单地删除旧的sqlite数据库并从头创建一个新数据库来轻松更改数据库模式.

现在该网站正在生产中,我需要保留数据,但我仍然希望通过轻松地将数据库转换为新模式来保持原始开发速度.

因此,假设我在修订版50中有model.py,在model.py中有修订版75,描述了数据库的模式.在这两个模式之间,大多数更改都是微不足道的,例如,使用默认值声明新列,我只想将此默认值添加到旧记录中.

最终,一些变化可能不是微不足道的,需要一些预先计算.

您如何(或将)如何处理快速变化的Web应用程序,例如,每天使用一个或两个新版本的生产代码?

顺便说一句,如果这有任何不同,该网站是用Pylons编写的.

python pylons data-migration sqlalchemy migrate

52
推荐指数
3
解决办法
2万
查看次数

如何从主机编辑Docker容器文件?

现在我找到了一种方法将主机文件公开给容器(-v选项),我想做一些相反的事情:

如何使用主机编辑器编辑正在运行的容器中的文件?

sshfs可能可以完成这项工作,但由于正在运行的容器已经是某种主机目录,我想知道是否有便携式(在aufs,btrfs和设备映射器之间)这样做?

docker

46
推荐指数
3
解决办法
10万
查看次数

是否值得使用sqlalchemy-migrate?

我有一个使用sqlalchemy(在Pylons内)的Web应用程序.我需要有效地更改架构,以便至少每天更改生产版本,可能更多,而不会丢失数据.

我在周末用sqlalchemy-migrate进行了一些玩法,我会说这给我留下了不好的印象.首先,我认为它无法帮助两个数据库引擎之间的迁移 ; 这可能只能通过sqlalchemy完成.其次,文档似乎不是最新的.我不得不更改一些命令行选项,比如在每个命令中给出存储库路径,这可能是迁移的错误.

但最糟糕的是它是"manage.py test "命令.它不仅实际修改了数据库(文档中明确指出了这一点,所以我不能责怪迁移),但是我的第一个迁移脚本只是进行了简单的模式迁移,使升级后的数据库与原始数据库的模式不同.但是"manage.py测试"只回答了类似的问题

 success !
Run Code Online (Sandbox Code Playgroud)

也就是说,它甚至没有检查架构是否处于连贯状态.那么迁移是否值得?S.Lott提出的良好实践相关的"自己动手"方法相比,是否有任何优势?是否有sqlalchemy-migrate的替代方案实际上简化了迁移过程,或者我只是尝试使用先验不好的迁移(那么请告诉我为什么不明显优于创建上面链接中提出的CSV列)?

非常感谢!

python migration data-migration sqlalchemy sqlalchemy-migrate

45
推荐指数
2
解决办法
3万
查看次数

包含哈希标记的目标的Apache重写规则

我正在尝试发出一个重定向,其中目标包含片段标识符部分.我试过这个规则:

RewriteRule   ^/foo/bar/([^/]+)/(.*)$  /cgi/script#foobar::$1.$2  [R,L]
Run Code Online (Sandbox Code Playgroud)

但是#转换为%23并且Web应用程序无法正确解析此URL.如何强制apache保留#角色?

apache mod-rewrite fragment-identifier

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

多个表需要一对多的关系

我有一个包含多个表的SQL数据库:A,B,C,D.这些表中的实体是完全不同的东西,具有不同的列,以及它们之间的不同类型的关系.
然而,它们都有一个共同点:在这种情况下,对评论系统的需求将具有相同的结构:author_id,date,content等.

我想知道哪种策略最适合这种模式使用A,.. D表使用注释系统.在一个经典的"博客"网站中,我会在"评论"表中使用一对多的关系与post_id.

这看起来我需要一个A_comments,B_comments等表来处理这个问题,这看起来有点奇怪.

有没有更好的办法 ?

sql database-design

16
推荐指数
2
解决办法
7786
查看次数

如何使用Cython保持C++类名不被修改?

我有一个名为Foo的C++类.如果我遵循Cython C++教程,我将需要以不同的方式调用Python类,例如PyFoo.但是我真的需要调用Python类Foo.如何有效地做到这一点?

编辑:我正在尝试连接以前与Boost Python接口的现有C++库.出于不同的原因,我想测试Cython.因为使用Boost:使用与C++相同的名称调用Python Python类,我想继续使用这个命名约定.以不同方式调用类不是Python(CPython)的要求,但它似乎是由Cython强加的,至少在教程中是这样.

我当然可以使用纯python模块来定义一个调用PyFoo的Foo类,但这看起来既乏味又低效.

c++ python cython

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

Cython和C++继承

我有2个班,A和B. B继承自A.

//C++    
class A
{
    public:
        int getA() {return this->a;};
        A() {this->a = 42;}
    private:
        int a;

};

class B: public A
{
    public:
       B() {this->b = 111;};
       int getB() {return this->b;};
    private:
        int b;

};
Run Code Online (Sandbox Code Playgroud)

现在我想使用Cython连接这两个类,并且可以从B实例调用getA()方法:

a = PyA()
b = PyB()
assert a.getA() == b.getA()
Run Code Online (Sandbox Code Playgroud)

目前我的pyx文件如下所示:

cdef extern from "Inherit.h" :
    cdef cppclass A:
       int getA()

    cdef cppclass B(A):
       int getB()


cdef class PyA:
    cdef A* thisptr

    def __cinit__(self):
       print "in A: allocating thisptr"
       self.thisptr = new …
Run Code Online (Sandbox Code Playgroud)

c++ python inheritance cython

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

NoSQL数据库无法处理的任务示例(如果有)

我想测试一下NoSQL世界.这只是好奇心,而不是绝对需要(尚未).我已经阅读了一些有关SQL和NoSQL数据库之间差异的信息.我确信潜在的优势,但我有点担心NoSQL不适用的情况.如果我理解NoSQL数据库本质上错过了ACID属性.

有人可以给出ACID关系数据库可以处理的一些真实世界操作(例如电子商务站点,或科学应用程序,或......)的示例,但NoSQL数据库可能会失败,无论是系统地某种类型竞争条件还是停电等?

如果没有修改数据库引擎,那么完美的例子就是没有任何解决方法.NoSQL数据库表现不佳的例子最终会成为另一个问题,但在这里我想看看理论上我们什么时候不能使用这种技术.

也许找到这样的例子是数据库特定的.如果是这种情况,那么让MongoDB代表NoSQL世界.

编辑:澄清这个问题我不想讨论哪种数据库对某些情况更好.我想知道在某些情况下这项技术是否绝对是一个绝对的死胡同,因为无论我们如何努力尝试某种类型的功能,SQL数据库提供的功能都无法在nosql商店之上实现.由于有许多nosql商店可用,我可以接受选择现有的nosql商店作为支持,但我最感兴趣的是商店应该提供的最小功能子集,以便能够实现更高级别的功能(比如可以使用不提供X的商店...).

rdbms acid mongodb nosql

12
推荐指数
3
解决办法
7914
查看次数

我可以使用Cython覆盖Python中的C++虚函数吗?

我有一个带有虚方法的C++类:

//C++
class A
{

    public:
        A() {};
        virtual int override_me(int a) {return 2*a;};
        int calculate(int a) { return this->override_me(a) ;}

};
Run Code Online (Sandbox Code Playgroud)

我想要做的是使用Cython将此类暴露给Python,从Python继承此类并具有正确的重写:

#python:
class B(PyA):
   def override_me(self, a):
       return 5*a
b = B()
b.calculate(1)  # should return 5 instead of 2
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点 ?现在我想,如果我们可以在Cython中覆盖虚拟方法(在pyx文件中)也可能很棒,但允许用户在纯python中执行此操作更为重要.

编辑:如果这有帮助,解决方案可能是使用此处给出的伪代码:http://docs.cython.org/src/userguide/pyrex_differences.html#cpdef-functions

但是有两个问题:

  • 我不知道如何在Cython中编写这个伪代码
  • 也许有更好的方法

c++ python cython

12
推荐指数
2
解决办法
2869
查看次数

如何用cmake包含目录的所有文件?

我想尝试CMake来管理一个新的C++项目.但是,会自动生成一些文件.我无法知道生成的文件的名称.我唯一知道的是这些文件都是在foo /目录中生成的.有没有办法让CMake包含来自foo /的所有.cpp文件?

谢谢.

build-automation cmake

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