小编Jen*_*ens的帖子

在Alembic迁移期间更新列内容

假设我的db模型包含一个对象User:

Base = declarative_base() 

class User(Base):                                                               
    __tablename__ = 'users'                                                     

    id = Column(String(32), primary_key=True, default=...) 
    name = Column(Unicode(100))                                             
Run Code Online (Sandbox Code Playgroud)

我的数据库包含一个包含n行的users表.在某些时候,我决定拆分成和,而在我想我的数据迁移以及.namefirstnamelastnamealembic upgrade head

自动生成的Alembic迁移如下:

def upgrade():
    op.add_column('users', sa.Column('lastname', sa.Unicode(length=50), nullable=True))
    op.add_column('users', sa.Column('firstname', sa.Unicode(length=50), nullable=True))

    # Assuming that the two new columns have been committed and exist at
    # this point, I would like to iterate over all rows of the name column,
    # split the string, write it into the new …
Run Code Online (Sandbox Code Playgroud)

sqlalchemy-migrate python-3.x alembic

13
推荐指数
2
解决办法
5330
查看次数

在Python中访问调用函数的变量

我怀疑我想做的事情在Python中不是那么干净.以下是一些相互调用的嵌套函数.(通常,它们不必是词法范围的,但需要动态地相互调用.)

def outer() :
    s_outer = "outer\n"

    def inner() :
        s_inner = "inner\n"
        do_something()

    inner()
Run Code Online (Sandbox Code Playgroud)

现在,当我打电话do_something(),然后我想访问的调用函数的变量进一步向上调用堆栈,在这种情况下s_outers_inner.

不幸的是,nonlocal这里的关键字只有在我定义函数do_something()内部时才有帮助inner().但是,如果我在同一级别定义它,outer()nonlocal关键字将不起作用.

但是,我想do_something()从各种其他函数调用,但始终在各自的上下文中执行它并访问它们各自的范围.

感觉顽皮我然后写了一个小的访问者,我可以从do_something()这里调用:

def reach(name) :
    for f in inspect.stack() :
        if name in f[0].f_locals : return f[0].f_locals[name]
    return None 
Run Code Online (Sandbox Code Playgroud)

然后

def do_something() :
    print( reach("s_outer"), reach("s_inner") )
Run Code Online (Sandbox Code Playgroud)

工作得很好.

我的两个问题是这些

  1. 有没有更好的方法来解决这个问题?(除了将各自的数据包装成dicts并明确地将这些dicts传递给do_something())

  2. 是否有更优雅/缩短的方式来实现该reach()功能?

干杯!

python python-3.x

11
推荐指数
3
解决办法
5033
查看次数

从列表中删除元素的最佳方法

我想知道从列表中删除元素的最佳方法/有效方法是什么.

一些功能被Python提供:

  1. some_list.remove(value),但如果找不到值则抛出错误.
  2. some_list.pop(some_list[index]),删除列表中给定位置的项目,并将其返回.
  3. del (some_list[index]),它从给定索引中删除元素,它与pop不同,因为它不返回值.

场景:

  • 如果要删除的项目很少,请说一个元素或1到5之间.
  • 如果必须删除序列中的多个项目.
  • 如果必须根据条件删除不同的项目.
  • 如果你有一个列表列表并想要按顺序删除元素怎么样?

python list

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

Xpath只选择具有匹配属性的直接兄弟

我有以下示例文档:

<root>
  <p class="b">A</p>
  <p class="b">B</p>
  <p class="a">C</p>
  <p class="a">D</p>
  <p class="b">E</p>
  <x>
    <p class="b">F</p>
  </x>
</root>
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个xpath表达式,它选择具有匹配类属性的给定节点的所有直接兄弟,而不是任何兄弟.在上面的例子中,<p class="b">应该选择前两个AB; 同样是两张<p class="a">CD,同样是第五张单曲<p class="b">E,因为它没有直接的兄弟姐妹; 同样是单个<p class="b">F里面的<x>.请注意,在此上下文中,B和C不是直接兄弟,因为它们具有不同的类属性值!

我有的是这个:

xml.xpath("//p") # This selects all six <p> elements.
xml.xpath("//p[@class='b']") # This selects all four <p class="b"> elements.
xml.xpath("//p/following-sibling::p[@class='b']") # This selects all <p class="b"> sibling elements, even though not direct siblings.
Run Code Online (Sandbox Code Playgroud)

最后一个表达式也选择了第五个兄弟节点,尽管中间存在不匹配的兄弟节点.

如何仅选择具有相同class值的直接兄弟姐妹?

编辑澄清:注意最后两个是如何选择,而不是兄弟姐妹!

编辑在这里保存了一个例子.基于的Xpath表达式 …

python xpath

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

使用Python pickle存储对象,并将其加载到不同的命名空间中

我想在两个Python程序之间传递对象状态(一个是我自己的独立运行代码,一个是Pyramid视图),以及不同的命名空间.这里这里有一些相关的问题,但我不能完全按照我的方案进行操作.

我自己的代码定义了一个__main__有点复杂结构的全局类(即命名空间):

# An instance of this is a colorful mess of nested lists and sets and dicts.
class MyClass :
    def __init__(self) :
        data = set()
        more = dict()
        ... 

    def do_sth(self) :
        ...
Run Code Online (Sandbox Code Playgroud)

在某些时候,我挑选了这个类的一个实例:

c = MyClass()
# Fill c with data.

# Pickle and write the MyClass instance within the __main__ namespace.
with open("my_c.pik", "wb") as f :
    pickle.dump(c, f, -1)
Run Code Online (Sandbox Code Playgroud)

A hexdump -C my_c.pik表明前几个字节包含__main__.MyClass我假设该类确实在全局命名空间中定义,并且这在某种程度上是读取pickle的要求.现在我想MyClass …

python pickle python-3.x

9
推荐指数
2
解决办法
4691
查看次数

如何记录JavaScript承诺的已解析值

鉴于此代码:

function asyncFoo() {
  return new Promise(function (fulfill, reject) {
    doAsyncStuff(function(err, data) {
      if(err) reject(new Error(err));
      else fulfill(new Bar(data));
    });
  });
}
Run Code Online (Sandbox Code Playgroud)

我如何记录asyncFoo将返回一个Promise,当满足时将产生一个实例Bar,并且当被拒绝时将产生一个实例Error

/**
 * @return << Here, what do I have to write? >>
 */
function asyncFoo() { ... }
Run Code Online (Sandbox Code Playgroud)

javascript jsdoc

9
推荐指数
2
解决办法
6006
查看次数

如何区分LLVM中的有符号和无符号整数

LLVM项目不区分此处描述的有符号和无符号整数.在某些情况下,您需要知道特定变量是应该被解释为有符号还是无符号变量,例如,当它是大小扩展时或在分区中使用时.我的解决方案是为每个变量保留一个单独的类型信息,描述它是整数还是基数类型.

但是,我想知道,是不是有办法在LLVM中"归属"这种类型?我正在寻找可以添加到某种类型的某种"用户数据",但似乎什么都没有.在创建类型时必须以某种方式发生这种情况,因为在LLVM中只生成一次相同的类型.

因此,我的问题是:

有没有办法跟踪整数变量是否应该在LLVM基础结构中被解释为有符号或无符号,或者确实是像我一样保留单独信息的唯一方法?

谢谢

llvm llvm-ir llvm-c++-api

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

在同一台服务器上运行多个芹菜实例

我想在同一台机器上运行两个芹菜实例.一个是我的应用程序的'A'版本,另一个是'B'版本.

我有两个实例,我这样开始:

(env1)/home/me/firstapp$ celery -A app.tasks worker --config celeryconfig
(env2)/home/me/secondapp$ celery -A app.tasks worker -n Carrot --config celeryconfig
Run Code Online (Sandbox Code Playgroud)

在每个应用程序的tasks.py中,我创建一个像这样的芹菜实例:

 celery = Celery('tasks', backend='amqp', broker='amqp://guest@127.0.0..1.5672//')
 @celery.task
 def run_a_task():
     do_stuff()
Run Code Online (Sandbox Code Playgroud)

在env2的task.py中,如何指定我想使用secondapp(名为Carrot)中的第二个celery实例,而不是第一个来自firstapp的芹菜实例?我怀疑我需要在第一行的celery构造函数中更改一些内容,但我不知道要添加什么.

python celery

7
推荐指数
2
解决办法
6639
查看次数

是否发现C/C++代码中的指针静态等效于HaltingΡroblem?

我并没有深入根植于静态代码分析的正式方面,因此这个问题.

几年前,我读到使用静态代码分析区分代码和数据等同于暂停问题.(引用需要,但我不再拥有它了.Stackoverflow在这里这里有线程.)至少对于基于冯诺依曼架构的常见计算机架构,其中代码和数据共享相同的内存,这似乎是有意义的.

现在我正在研究C/C++代码和指针分析的静态分析; 该程序不执行.不知怎的,我有一种感觉,静态跟踪指针值的所有创建和使用类似于停止问题,因为我无法确定内存中的给定值是否是指针值,即我无法通过指针值跟踪指针值的值记忆. 别名分析可能会缩小问题范围,但面对多线程代码似乎变得不那么有用了.

(人们甚至可以考虑跟踪任意值,而不仅仅是指针:为任何给定的"有趣"值构建一个完整的值流似乎等同于停止问题.)

由于这只是一种预感,我的问题是:我可以参考更正式的发现吗?我错了吗?

c c++ pointers static-analysis halting-problem

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

SQLAlchemy/MySQL二进制blob正在进行utf-8编码?

我正在使用SQLAlchemy和MySQL,带有一个files表来存储文件.该表定义如下:

mysql> show full columns in files;
+---------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| Field   | Type         | Collation       | Null | Key | Default | Extra | Privileges                      | Comment |
+---------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| id      | varchar(32)  | utf8_general_ci | NO   | PRI | NULL    |       | select,insert,update,references |         |
| created | datetime     | NULL            | YES  |     | NULL    |       | select,insert,update,references |         |
| updated | datetime     | NULL            | YES  |     | NULL    |       | select,insert,update,references | …
Run Code Online (Sandbox Code Playgroud)

mysql blob sqlalchemy utf-8 python-3.x

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