小编har*_*dsv的帖子

带有常规属性的SQLAlchemy DetachedInstanceError(不是关系)

我刚开始使用SQLAlchemy并获得DetachedInstanceError,并且无法在任何地方找到相关信息.我在会话之外使用实例,所以SQLAlchemy很自然无法加载任何关系,如果它们尚未加载,但是,我访问的属性不是关系,实际上这个对象根本没有任何关系.我找到了诸如渴望加载的解决方案,但我无法应用于此,因为这不是一种关系.我甚至在关闭会话之前尝试"触摸"此属性,但它仍然无法阻止异常.即使在非关系属性之前成功访问过一次之后,可能导致此异常的原因是什么?任何有关调试此问题的帮助表示赞赏.我将同时尝试获得可重现的独立场景并在此更新.

更新:这是具有几个堆栈的实际异常消息:

  File "/home/hari/bin/lib/python2.6/site-packages/SQLAlchemy-0.6.1-py2.6.egg/sqlalchemy/orm/attributes.py", line 159, in __get__
    return self.impl.get(instance_state(instance), instance_dict(instance))
  File "/home/hari/bin/lib/python2.6/site-packages/SQLAlchemy-0.6.1-py2.6.egg/sqlalchemy/orm/attributes.py", line 377, in get
    value = callable_(passive=passive)
  File "/home/hari/bin/lib/python2.6/site-packages/SQLAlchemy-0.6.1-py2.6.egg/sqlalchemy/orm/state.py", line 280, in __call__
    self.manager.deferred_scalar_loader(self, toload)
  File "/home/hari/bin/lib/python2.6/site-packages/SQLAlchemy-0.6.1-py2.6.egg/sqlalchemy/orm/mapper.py", line 2323, in _load_scalar_attributes
    (state_str(state)))
DetachedInstanceError: Instance <ReportingJob at 0xa41cd8c> is not bound to a Session; attribute refresh operation cannot proceed
Run Code Online (Sandbox Code Playgroud)

部分模型如下所示:

metadata = MetaData()
ModelBase = declarative_base(metadata=metadata)

class ReportingJob(ModelBase):
    __tablename__ = 'reporting_job'

    job_id         = Column(BigInteger, Sequence('job_id_sequence'), primary_key=True)
    client_id      = Column(BigInteger, nullable=True)
Run Code Online (Sandbox Code Playgroud)

并且字段client_id是导致此异常的原因,其用法如下所示:

查询:

    jobs = session \
            .query(ReportingJob) \ …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

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

R中的long/bigint/decimal等效数据类型

我们有什么数据类型选择来处理R中的大数?默认情况下,整数的大小似乎是32位,因此来自sql server的bigint数字以及从python通过rpy2传递的任何大数字都会被破坏.

> 123456789123
[1] 123456789123
> 1234567891234
[1] 1.234568e+12
Run Code Online (Sandbox Code Playgroud)

当使用RODBC读取bigint值123456789123456789时,它返回为123456789123456784(参见最后一位数字),并且通过RJSONIO反序列化时的相同数字将返回-1395630315L(这似乎是RJSONIO的附加错误/限制).

> fromJSON('[1234567891]')
[1] 1234567891
> fromJSON('[12345678912]')
[1] -539222976
Run Code Online (Sandbox Code Playgroud)

其实,我需要能够处理大量来自JSON的到来,所以用RJSONIO的限制,我可能不会有一个解决办法,除了找到更好的JSON库(这似乎是一个非选项现在).我想听听专家们对此以及一般情况的看法.

types r

28
推荐指数
4
解决办法
2万
查看次数

如何将Maven groupId,artifactId和项目版本添加到命令行

我想从命令行中检索groupId,artifactId和 Maven项目的版本.

本主题中提出的解决方案" 如何将Maven项目版本添加到bash命令行 "是使用以下插件:

mvn org.apache.maven.plugins:maven-help-plugin:2.2:evaluate -Dexpression=project.artifactId

它的工作原理很好,但我想不出如何设置,在同一时间内,project.groupId, project.artifactId & project.version-Dexpression说法.

我会避免每次使用不同的-Dexpression参数启动3次Maven命令...

THKS


目前,我通过执行以下操作来检索数据:

local pom_groupid=`mvn org.apache.maven.plugins:maven-help-plugin:2.2:evaluate -Dexpression=project.groupId |grep -Ev '(^\[|Download\w+:)'`
local pom_artifactid=`mvn org.apache.maven.plugins:maven-help-plugin:2.2:evaluate -Dexpression=project.artifactId |grep -Ev '(^\[|Download\w+:)'`
local pom_version=`mvn org.apache.maven.plugins:maven-help-plugin:2.2:evaluate -Dexpression=project.version |grep -Ev '(^\[|Download\w+:)'`
Run Code Online (Sandbox Code Playgroud)

command-line maven

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

Jenkinsfile中奇怪的变量范围行为

当我运行下面的Jenkins管道脚本时:

def some_var = "some value"

def pr() {
    def another_var = "another " + some_var
    echo "${another_var}"
}

pipeline {
    agent any

    stages {
        stage ("Run") {
            steps {
                pr()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

groovy.lang.MissingPropertyException: No such property: some_var for class: groovy.lang.Binding
Run Code Online (Sandbox Code Playgroud)

如果def删除some_var它,它工作正常.有人可以解释导致此行为的范围规则吗?

groovy groovyshell jenkins jenkins-groovy jenkins-pipeline

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

从解析器控制Python PLY词法分析器状态

我正在研究一个简单的SQL选择,如查询解析器,我需要能够捕获可以在某些地方字面上出现的子查询.我发现lexer状态是最好的解决方案,并且能够使用花括号来标记开始和结束.但是,子查询将用括号分隔,而不是用卷曲分隔,括号也可以在其他地方出现,所以我不能成为每个开放状态的状态.解析器随时可以使用此信息,因此我希望在解析器规则中的适当位置调用begin和end.然而这并不起作用,因为词法分析器似乎一次性标记了流,因此令牌在INITIAL状态下生成.这个问题有解决方法吗?以下是我尝试做的概述:

def p_value_subquery(p):
    """
     value : start_sub end_sub
    """
    p[0] = "( " + p[1] + " )"

def p_start_sub(p):
    """
    start_sub : OPAR
    """
    start_subquery(p.lexer)
    p[0] = p[1]

def p_end_sub(p):
    """
    end_sub : CPAR
    """
    subquery = end_subquery(p.lexer)
    p[0] = subquery
Run Code Online (Sandbox Code Playgroud)

start_subquery()和end_subquery()定义如下:

def start_subquery(lexer):
    lexer.code_start = lexer.lexpos        # Record the starting position
    lexer.level = 1
    lexer.begin('subquery') 

def end_subquery(lexer):
    value = lexer.lexdata[lexer.code_start:lexer.lexpos-1]
    lexer.lineno += value.count('\n')
    lexer.begin('INITIAL')
    return value
Run Code Online (Sandbox Code Playgroud)

词法分析器令牌只是用于检测近距离:

@lex.TOKEN(r"\(")
def t_subquery_SUBQST(t):
    lexer.level += 1

@lex.TOKEN(r"\)")
def t_subquery_SUBQEN(t):
    lexer.level -= …
Run Code Online (Sandbox Code Playgroud)

python yacc ply lexer

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

为什么`git cherry-pick --allow-empty` 没有效果?

如果我挑选了一个不做任何更改的提交,但无论如何我都希望它提交(以便提交的审计跟踪与另一个项目一致),我会收到消息:

$ git cherry-pick 696abcb
...
nothing to commit, working directory clean
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:

     git commit --allow-empty
Run Code Online (Sandbox Code Playgroud)

根据手册页,我可以在--allow-empty. 但这会导致相同的消息:

$ git cherry-pick --allow-empty 696abcb
Run Code Online (Sandbox Code Playgroud)

(与上面相同的消息)

这是一个错误吗?我完全误解了这个选项的意义吗?

git

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

是否可以扩展旧的和新的样式类?

当我扩展一些工具生成的类时,我没有意识到它们是旧样式类,直到我尝试使用super().super()不适用于旧样式类,所以我收到了这个错误:

TypeError: super() argument 1 must be type, not classobj
Run Code Online (Sandbox Code Playgroud)

例如,试试这个片段:

>>> class A:
...     def greet(self):
...         print "A says hi"
...
>>> class B(A):
...     def greet(self):
...         print "B says hi"
...
>>> super(B, B()).greet()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: super() argument 1 must be type, not classobj
Run Code Online (Sandbox Code Playgroud)

我只是好奇如果我从对象扩展B以使它成为一个新的样式类会发生什么,它似乎使super()工作.

>>> class B(A, object):
...     def greet(self):
...         print "B says hi"
...
>>> super(B, B()).greet()
A says hi
Run Code Online (Sandbox Code Playgroud)

这是一个合适的解决方法还是稍后会产生一些不良后果?

python

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

阵列构造的断点

无论如何在eclipse或其他调试器中设置断点使得执行在构造数组时停止了吗?我对构造一个原始数组(int [])特别感兴趣,但这个问题同样适用于任何数组.

我需要找到创建大量垃圾的罪魁祸首,包括int [],char []和byte []等等,所以如果我可以在某些条件下设置断点,我将能够缩小代码范围.

我尝试使用你的内存分析,但它只显示这些对象的一小部分的分配,其余的显示为<objects without allocation information>,我不知道为什么.当我进入Objects unreachable from GC roots视图时,我只看到大约7%垃圾的分配信息.通过分配这么小比例的对象,我甚至不确定我是否遗漏了一些位置.有没有办法让YK保留所有分配?

java eclipse breakpoints yourkit

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

os.path.getmtime()不返回秒的分数

我为centos 5.3编译了python 2.6.4并发现了os.path.getmtime()或os.stat().m_time没有小数部分的问题.根据文档,如果os.stat_float_times()返回True,那么它应返回float值.在我的情况下,我确实看到它是浮动的,但没有分数部分(它是0).

In [3]: os.path.getmtime('/tmp') 
Out[3]: 1268339116.0

In [4]: os.stat('/tmp')
Out[4]: posix.stat_result(st_mode=17407, st_ino=508897L, st_dev=29952L, st_nlink=7, st_uid=0, st_gid=0, st_size=4096L, st_atime=1268101696, st_mtime=1268339116, st_ctime=1268339116)

In [5]: os.stat_float_times()
True

In [6]: os.stat('/tmp').st_mtime
Out[6]: 1268339116.0
Run Code Online (Sandbox Code Playgroud)

stat()输出看起来像一个int也很奇怪.在Windows上,我确实看到了一个具有相同python版本的小部分.我在colinux上运行centos,可能是扮演一个角色,还是一些python构建问题?我找不到任何针对通用colinux问题的点击.可能是colinux如何配置文件系统?在那种情况下我需要检查什么?

python linux centos

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