如何在下表中仅选择一些行,以便它们总和到某个值?
Table
-----
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
2 | 1.5 | 0.0 | 7.5 | 18
3 | 1.0 | 2.0 | 7.5 | 18
4 | 0.0 | 0.5 | 5 | 13
Run Code Online (Sandbox Code Playgroud)
比方说,我想要的最高价值是57 ......
所以我需要选择上一个表中的行,使得每行的qty1 + qty2 + qty3 + qty4,直到该57值,并丢弃其他行.在这个例子中,我会得到以下内容:
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
2 | 1.5 …Run Code Online (Sandbox Code Playgroud) 我在sqlite内存DB上创建了一个SQLAlchemy声明式Base:
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
Run Code Online (Sandbox Code Playgroud)
我正在使用它来进行单元测试逻辑.
有了这个我在DB中有我的表.但现在我希望使用alembic迁移某些东西.
AFAIK env.pyalembic 迁移使用run_migrations_online,并使用一个名为engine_from_config在此创建新引擎的SQLAlchemy函数.
我想要解决的问题是有一种方法可以使用先前创建的连接,该连接保存最近创建的表,用于alembic迁移.
我在我的测试脚本上使用了这个:在应用程序代码中使用Alembic API,以便我的脚本在上一次create_all调用之后执行以下操作:
import alembic.config
alembicArgs = ['--raiseerr', '-x', 'dbPath=sqlite:///:memory:', 'upgrade', 'head']
alembic.config.main(argv=alembicArgs
Run Code Online (Sandbox Code Playgroud)
[请注意,我只是通过Base.metadata.create_all(engine)调用创建我的模式,但我的alembic版本不仅包含模式更改,它们还有一些目录表数据的填充,这就是为什么我打算在这里使用alembic.事实上,如果我的alembic迁移持有一些"创建表"逻辑,那么这两者就会发生冲突.所以我可以安全地删除create_all调用并依赖于alembic来创建我的模式.]
已经修改了我的alembic env.py:
def run_migrations_online():
ini_section = config.get_section(config.config_ini_section)
db_path = context.get_x_argument(as_dictionary=True).get('dbPath')
if db_path:
ini_section['sqlalchemy.url'] = db_path
connectable = engine_from_config(
ini_section,
prefix ... # everything from here the same as default env.py
Run Code Online (Sandbox Code Playgroud)
据我所知,connectable=engine_from_config在新sqlite:///:memory:数据库上创建了与新引擎的连接,这就是为什么我无法通过alembic升级我脚本中先前创建的数据库的原因create_all(engine).
所以...... TLDR; 有没有办法将我以前存在的引擎连接(使用我创建的表)传递给alembic,以便它可以迁移它?(我很确定我创建的dbPath arg在这里没用,事实上,我只是复制我引用的其他帖子使用的内容).
我正在尝试确定哪种数据结构最适合我的需求。
除了技术细节之外,我可能会将程序的需求转换为使用字典或使用列表,并且由于性能将成为一个问题,我想知道什么可能是更快的解决方案。我最终得出的结论是,检索/索引将是关键操作。
那么在内存使用和速度方面什么更有效呢?
我正在使用mercurial VCS,我错误地推了三次提交,我希望它们被撤消,这可以实现吗?我很确定没有任何更改传播给我推送到的存储库中的任何人,所以我相信这不会破坏任何人的代码......
我已经尝试过hg rollback但是因为我已经推动了我无法以正确的方式撤消任何内容.我也知道hg退出,但我不确定我是否应该使用这个我需要的...
谢谢!
编辑
这是图形日志,我忘了提到一些提交是合并的一部分,但它们也需要撤消...
tip
|
a
| \
| b
| /
c
|
d
Run Code Online (Sandbox Code Playgroud)
我需要将提示返回到c,或者d如果由于合并没有其他方法可以阻止它...
我有以下表格:
from models import MyModel
class MultProgresemosReferenciasForm(forms.Form):
selected = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple,
queryset=MyModel.objects.filter(active=True))
Run Code Online (Sandbox Code Playgroud)
我将在以下模板中使用:
<form action="" method="post">
{% for field in form %}
{{ field }}
{% endfor %}
{% csrf_token %}
<input type="submit" value="Submit Selected" />
</form>
Run Code Online (Sandbox Code Playgroud)
其中呈现以下html:
<form action="" method="post">
<ul>
<li><label for="id_selected_1"><input type="checkbox" name="selected" value="9" id="id_selected_8" /> prog 1420000930 - pp 0.0078125</label></li>
<li><label for="id_selected_2"><input type="checkbox" name="selected" value="10" id="id_selected_9" /> prog 1420001041 - pp 0.00390625</label></li>
</ul>
<div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='csrf_token_hash_string...' /></div>
<input type="submit" value="Submit Selected" />
</form>
Run Code Online (Sandbox Code Playgroud)
如您所见,模板为每个复选框获取一些标签(来自模型,其中有两个字符串字段,其中包含您可以在其中看到的值).
问题是,我如何进入复选框的标签并自定义它们?我正在尝试使用这些相同型号的名称,但需要进行一些调整.在django有一个简单的方法来实现这个目标吗? …
我正在尝试使用 winpdb 在远程机器上调试 python 脚本。
问题是我想运行 rpdb2(winpdb 的控制台版本)在我的远程机器上启动服务器来运行脚本。
然后,在我的本地机器上,我想启动 winpdb 作为客户端以连接到 rpdb2 服务器进行本地调试。
我在 localhost 时设法做到了这一点,例如:
服务器:“远程”(但在本地主机中运行):
screen rpdb2 -s -d -r script.py
Run Code Online (Sandbox Code Playgroud)
客户端:“本地”(也在本地主机中):
winpdb -olocalhost -a script.py
Run Code Online (Sandbox Code Playgroud)
这工作正常。现在我只是在远程主机中使用了相同的服务器行,并将客户端行 -o 选项更改为服务器地址。但是,现在在我的客户端中,winpdb 说它找不到要附加到的 script.py。有什么我应该首先考虑来完成它的吗?
我正在尝试用Python编写一些脚本,偶然发现需要在Linux系统中更新给定用户的密码......
更新:目标是实现脚本从给定的数据/算法自动更新密码.重要的是没有人为干预......
有没有办法实现这一目标?或者我应该通过其他方式搜索?
谢谢!
我有一个交易表:
Transactions
------------
id | account | type | date_time | amount
----------------------------------------------------
1 | 001 | 'R' | '2012-01-01 10:01:00' | 1000
2 | 003 | 'R' | '2012-01-02 12:53:10' | 1500
3 | 003 | 'A' | '2012-01-03 13:10:01' | -1500
4 | 002 | 'R' | '2012-01-03 17:56:00' | 2000
5 | 001 | 'R' | '2012-01-04 12:30:01' | 1000
6 | 002 | 'A' | '2012-01-04 13:23:01' | -2000
7 | 003 | 'R' | '2012-01-04 …Run Code Online (Sandbox Code Playgroud) 只是在Python中寻找一个脚本,它接收一些字符串并返回所有可能的字符串,这些字符串由原始字符串中字符的所有可能组合组成......
我发现脚本随机乱把字符串中的字符,但它们只返回一个randome组合,而我正在寻找的是所有可能的组合......
比方说,例如:
script.py "abc"
abc
acb
bac
bca
cab
cba
Run Code Online (Sandbox Code Playgroud)
谢谢!
使用Python 2.7和模拟库
如何使用模拟测试是否已使用某些特定参数初始化某些修补对象?
这里有一些示例代码和伪代码:
unittest.py:
import mock
@mock.patch('mylib.SomeObject')
def test_mytest(self, mock_someobject):
test1 = mock_someobject.return_value
test1 = method_inside_someobject.side_effect = ['something']
mylib.method_to_test()
# How can I assert that method_to_test instanced SomeObject with certain arguments?
# I further test things with that method_inside_someobject call, no problems there...
Run Code Online (Sandbox Code Playgroud)
mylib.py:
from someobjectmodule import SomeObject
def method_to_test():
obj = SomeObject(arg1=val1, arg2=val2, arg3=val3)
obj.method_inside_someobject()
Run Code Online (Sandbox Code Playgroud)
那么,如何测试SomeObject的实例是arg1 = val1,arg2 = val2,arg3 = val3?