小编Cam*_*son的帖子

SQLAlchemy中复杂的外键约束

我有两张桌子,SystemVariablesVariableOptions.SystemVariables应该是不言自明的,并VariableOptions包含所有变量的所有可能选择.

VariableOptions有一个外键,variable_id它指出哪个变量是一个选项.SystemVariables有一个外键,choice_id它指出哪个选项是当前选择的选项.

我已经利用use_alteron choice_idpost_updateon SystemVariables' choice关系绕过了循环关系.但是,我想添加一个额外的数据库约束,以确保它choice_id是有效的(即它指的是一个引用它的选项).

假设sysVar代表SystemVariables表中的一行,我需要的逻辑基本上是:

VariableOptions[sysVar.choice_id].variable_id == sysVar.id
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用SQL,声明式或任何其他方法构造这种约束.如果有必要,我可以在应用程序级别验证这一点,但如果可能的话,我想在数据库级别进行验证.我正在使用Postgres 9.1.

这可能吗?

python sql postgresql database-design sqlalchemy

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

我想返回一个值并引发异常,这是否意味着我做错了什么?

我有许多函数可以解析文件中的数据,通常会返回结果列表.

如果我在文件中遇到一个狡猾的行,我想继续并处理有效行,并返回它们.但我也想将错误报告给调用函数.我想报告它的原因是调用函数可以通知用户该文件需要查看.我不想在解析函数中开始做GUI事情,因为这似乎是对关注点分离的重大违反.解析函数无法访问控制台我正在编写错误消息.

这让我想要返回成功的数据,但也因为错误而引发异常,这显然是我无法做到的.

考虑以下代码:

try:
    parseResult = parse(myFile)
except MyErrorClass, e:
    HandleErrorsSomehow(str(e))

def parse(file): #file is a list of lines from an actual file
    err = False
    result = []

    for lines in file:
        processedLine = Process(line)
        if not processedLine:
            err = True
        else
            result.append(processedLine)
    return result
    if err:
        raise MyErrorClass("Something went wrong")
Run Code Online (Sandbox Code Playgroud)

显然最后三行没有任何意义,但我无法找到一个很好的方法来做到这一点.我想我能做到return (err, result),并称之为

parseErr, parseResult = parse(file)
if parseErr:
    HandleErrorsSomehow()
Run Code Online (Sandbox Code Playgroud)

但返回错误代码似乎不够pythonic,更不用说返回错误代码和实际结果值的元组.

事实上,我觉得我想在一个不应该非常复杂的应用程序中做一些如此奇怪的事情,这让我觉得我可能做错了什么.这个问题有更好的解决方案吗?或者有什么方法可以finally用来返回值并同时引发异常?

python architecture exception-handling exception

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

我是否可以告诉Rust编译器仅对匹配特定名称的文件忽略警告?

我正在使用一个为我生成一堆代码的库,而且它通常非常渴望生成我还没有使用的方法.在构建我的项目时,这会导致一堆嘈杂的警告.

该脚本在我的代码库中生成普通的.rs文件,然后我将其导入并调用,就像普通代码一样:

mod autogen_code; 
pub use self::autogen_code::*;
Run Code Online (Sandbox Code Playgroud)

我不能#![allow(unused_whatever)]在生成的代码上使用,因为当我重建我的项目时,生成脚本会再次运行,任何更改都将消失.这些文件是.gitignore'd,并且在顶部有很多评论说"这是全部自动生成的.请勿触摸".

我不想在我的整个项目中允许使用未使用的东西,所以放在#![allow(unused_whatever)]我的箱子顶部也是一个非首发.

好处是生成的文件都有一个可预测的名称,所以我希望有一种方法可以告诉cargo/rustc不要为匹配特定文件名的文件发出警告.这可能吗?

rust rust-cargo

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

如何在Jbutton的边缘添加间隙?

我想在我的JButtons 上留下默认边框,但也要在它们周围放置空白区域.我正在使用垂直BoxLayout.

  • 我最初没有谈到边界,并且得到了LineBorder我想要的单像素,但是这些按钮都是相互对接的.

  • 然后我试过了button[i].setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)).它不是在按钮周围添加空白区域,而是使按钮区域扩展.它也删除了LineBorder.

  • 然后我尝试了: button[i].setBorder(BorderFactory.createCompoundBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5), button.getBorder()))

这让我回来了LineBorder,但不是在线外添加空白区域,而是将按钮区域扩展到线外!

我意识到我可以添加空白框来分隔我的按钮,但我也希望它们的两侧都有空间,这就是为什么我要添加一个EmptyBorder.我是Swing的新手,所以也许有一种更好的方法可以做到这一点,我不知道:)

我正在使用Jython,但API应该与Java相同.

java layout user-interface swing jython

6
推荐指数
1
解决办法
4917
查看次数

假设输入是完整的 ISO 8601 字符串,“new Date(string)”在现代浏览器中可靠吗?

由于浏览器不一致,有很多关于使用new Date(string)(或 javascript 中的等效内容)的警告。MDN有这样的说法Date.parse(string)

不建议使用 Date.parse,因为在 ES5 之前,字符串的解析完全依赖于实现。不同主机解析日期字符串的方式仍然存在许多差异,因此应手动解析日期字符串(如果要容纳许多不同的格式,则库可以提供帮助)。

然而,当您继续阅读时,大多数有关特定于实现的行为的警告似乎都是针对以下场景:

  • 旧浏览器(例如ES5 之前的旧浏览器)
  • 非 ISO 8601 输入(例如"March 6th 2015"
  • 不完整的 ISO 8601 输入(例如"2015-06-03",没有时间或时区)

我想知道的是,考虑到这两个假设:

  • 现代浏览器(比如 2020 年以后的任何浏览器)
  • 完整的 ISO 8601 输入(例如"2021-11-26T23:04:00.778Z"

我可以可靠地使用new Date(string)吗?

javascript date cross-browser

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

当使用Jython的Java类时,你是否还想使用getter和setter?你应该?

众所周知,Python类不能拥有真正的私有成员.该不可─ 因为这-obvious含义是,Java类私处被公开于Jython的.(隐藏你的下体,Java!)

因此,当使用Jython并访问通常通过getter和setter暴露给其他Java类的Java类私有时,您是否还想使用这些方法?或者你直接访问私人?

更恰当的问题是,你应该使用getter和setter吗?如果这些方法存在副作用,那么答案肯定是'是',但是如果方法就在那里,因为有人认为在任何地方放置吸气剂和定位器是正确的事情(IMO不是,只是制造那该死的东西是公开的),那么有没有理由为Java的所有额外仪式而烦恼?

java jython

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

在Visual Studio(2010)中,如何让小方法信息帮助框再次弹出?

我知道Ctr+ Space是为了完成代码完成的智能感知,但是如何让这个小框弹出,这是提供方法和参数信息的方框:

在此输入图像描述

此刻,如果我丢失它,我会退格逗号,然后当我重新输入逗号时弹出.我确定有一个键盘快捷键,但我很想丢失.

keyboard-shortcuts visual-studio-2010 visual-studio

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

Python与Java一起使用时提供了哪些额外功能?

我是一名Java开发人员.我想知道通过将Python作为开发语言添加到Java应用程序中可以添加哪些功能和/或积极因素.

我在这里发帖,因为我没有得到谷歌的好答案.我要求你不要拒绝投票,将其标记为描述性问题,以便未来的Java开发人员能够理解他如何使用Python更好地创建应用程序.

python java jython

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

Javascript while循环使页面无法加载

当我把它放在我的标题中时:

<script>
function checkiffinished() {
  var n = $('.result-row').length;
  while (n!==3)
  {
  n = $('.result-row').length;
  $("span").text("There are " + n + " divs.");
  };

  };
</script>
Run Code Online (Sandbox Code Playgroud)

然后在体内放

<script>
 checkiffinished();
 </script>
Run Code Online (Sandbox Code Playgroud)

然后页面崩溃了.

代码应该用"result-row"类计算div的数量,并重复这个,直到具有上述类的div数为3.

我怎样才能这样做而不会崩溃页面?

编辑1:我在页面中的其他jQuery导致在另一个事件上有.result-row元素,这就是为什么我需要它定期检查.

EDIT2:我正在尝试与其他一些操纵页面元素的jQuery并行运行.

html javascript jquery loops while-loop

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

试图添加/减去变量

我试图有一些东西,当它被启用它添加到一个变量,当它被禁用时,它从变量中减去但是当我alert的变量的值刚出现时说NaN这是我的代码:

这是用于启用/禁用按钮

var speedrating;
function onoffButton(i, g, r)
{
    $(i).click(function () {
        if ($(i).html() == '<a class="onoffswitch" id="' + g + 'ON"></a>') {
            $(i).html('<a class="onoffswitch" id="' + g + 'OFF"></a>');
            speedrating -= r;
        } else {
            speedrating += r;
            $(i).html('<a class="onoffswitch" id="' + g + 'ON"></a>');
        }
        updateSpeedRate();
    });
}
Run Code Online (Sandbox Code Playgroud)

这是检查变量以查看要执行的操作的位置:

function updateSpeedRate()
{
    if (speedrating < 34) {
        $('.speedmeter').css('background-position', '0px -30px');
    } else {
        if (speedrating < 67) {
            $('.speedmeter').css('background-position', '0px -15px');
        } else { …
Run Code Online (Sandbox Code Playgroud)

javascript

0
推荐指数
1
解决办法
700
查看次数