我刚开始使用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) 我们有什么数据类型选择来处理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库(这似乎是一个非选项现在).我想听听专家们对此以及一般情况的看法.
我想从命令行中检索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) 当我运行下面的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
它,它工作正常.有人可以解释导致此行为的范围规则吗?
我正在研究一个简单的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) 如果我挑选了一个不做任何更改的提交,但无论如何我都希望它提交(以便提交的审计跟踪与另一个项目一致),我会收到消息:
$ 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)
(与上面相同的消息)
这是一个错误吗?我完全误解了这个选项的意义吗?
当我扩展一些工具生成的类时,我没有意识到它们是旧样式类,直到我尝试使用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)
这是一个合适的解决方法还是稍后会产生一些不良后果?
无论如何在eclipse或其他调试器中设置断点使得执行在构造数组时停止了吗?我对构造一个原始数组(int [])特别感兴趣,但这个问题同样适用于任何数组.
我需要找到创建大量垃圾的罪魁祸首,包括int [],char []和byte []等等,所以如果我可以在某些条件下设置断点,我将能够缩小代码范围.
我尝试使用你的内存分析,但它只显示这些对象的一小部分的分配,其余的显示为<objects without allocation information>
,我不知道为什么.当我进入Objects unreachable from GC roots
视图时,我只看到大约7%垃圾的分配信息.通过分配这么小比例的对象,我甚至不确定我是否遗漏了一些位置.有没有办法让YK保留所有分配?
我为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 ×4
breakpoints ×1
centos ×1
command-line ×1
eclipse ×1
git ×1
groovy ×1
groovyshell ×1
java ×1
jenkins ×1
lexer ×1
linux ×1
maven ×1
ply ×1
r ×1
sqlalchemy ×1
types ×1
yacc ×1
yourkit ×1