完整的错误是
ActiveRecord::StatementInvalid: Mysql2::Error: SAVEPOINT active_record_1 does not exist: ROLLBACK TO SAVEPOINT active_record_1
Run Code Online (Sandbox Code Playgroud)
每当我尝试创建一个新的ActiveRecord对象时,我正在编写单元测试并收到此错误 - 但仅在某个点之后.这些行发生在以下行之后:
ActiveRecord::Base.connection.execute "DROP TABLE IF EXISTS foo"
ActiveRecord::Base.connection.execute "CREATE TABLE foo (id INTEGER PRIMARY KEY)"
Run Code Online (Sandbox Code Playgroud)
(如果测试成功,表'foo'将填充数据)
在上面的行之前,我可以写一些类似的东西
User.create(email => 'foo@bar.com')
Run Code Online (Sandbox Code Playgroud)
一切正常.但是,如果我在调用ActiveRecord :: Base.connection.execute之后尝试编写上面的行,那么我会得到上面描述的SAVEPOINT错误.我也尝试将我的执行语句放在一个事务中,但这没有帮助.我很难过.
仅供参考 - 我正在使用Rails 3.2.8
我试图刮掉以下网站:
如果单击标题为"导出数据"的表右上角的小按钮,则会运行javascript脚本,我的浏览器会以.csv格式下载该文件.我希望能够编写一个可以自动执行此操作的PhantomJS脚本.有任何想法吗?
上面的按钮被编码为HTML,如下所示:
<a id="LB_cmdCSV" href="javascript:__doPostBack('LB$cmdCSV','')">Export Data</a></div>
Run Code Online (Sandbox Code Playgroud)
我还在HTML源代码中找到了这个函数:
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)
我是PhantomJS/Javascript的新手,可以在这里使用一些指针.我想我已经找到了我需要自动完成的所有信息(如果我错了,请纠正我),但不知道从哪里开始编码.谢谢你的帮助.
编辑 - 这就是我的脚本现在的样子:
var page = new WebPage();
url = 'http://www.fangraphs.com/leaders.aspx?pos=all&stats=bat&lg=all&qual=0&type=8&season=2011&month=0&season1=2011&ind=0&team=0&rost=0& players=0';
page.open(encodeURI(url), function (status){
if (status !== "success") {
console.log("Unable to access website");
} else {
page.evaluate(function() {
__doPostBack('LB$cmdCSV', '');
});
}
phantom.exit(0); …Run Code Online (Sandbox Code Playgroud) 我有一个表,其中每一行都有一个描述字段以及一个布尔值.我正在尝试编写一个查询,我可以按每个相应的描述进行分组,并查看布尔值为真的次数百分比.
示例表:
PID Gender SeniorCitizen
1 M 1
2 M 1
3 F 0
4 F 1
5 M 0
Run Code Online (Sandbox Code Playgroud)
我想要一个将返回此信息的查询:
Gender SeniorPct
M .66
F .50
Run Code Online (Sandbox Code Playgroud)
我已经到了能够计算男性或女性个人百分比的查询,但我希望一次看到两个结果
SELECT Gender, COUNT(*) * 1.0 /
(SELECT COUNT(*) FROM MyTable WHERE Gender='M')
FROM MyTable WHERE Gender='M' and SeniorCitizen=1;
Run Code Online (Sandbox Code Playgroud)
我一直在尝试在上面的外部SELECT中包含一个"GROUP BY Gender"语句,但我似乎无法弄清楚如何在调整外部SELECT之后调整内部SELECT以获得正确的结果.
我今天遇到了一个有趣的情况.谁能解释为什么ts1和ts2的偏移量不同?ts1是一个日期时间对象,可立即识别时区.ts2是一个日期时间对象,它从时区开始并且替换了tzinfo.然而,他们最终得到不同的抵消.
>>> from pytz import timezone
>>> EST = timezone('America/New_York')
>>> ts1 = datetime.datetime.now(tz=EST)
>>> ts2 = datetime.datetime.now()
>>> ts2 = ts2.replace(tzinfo=EST)
>>> print ts1
2014-05-16 11:25:16.749748-04:00
>>> print ts2
2014-05-16 11:25:19.581710-05:00
Run Code Online (Sandbox Code Playgroud) 我有一个 DynamoDB 表,其中包含不止一种类型的逻辑实体。我的表存储“员工”和“组织”,并在两者之间创建多对多关系。
我正在努力解决如何使用 DynamoDBMapper 对实体和表进行建模。特别是在尝试编写将返回员工和组织的查询时。
在我的 Java 代码中,我首先使用两个类来表示这些实体。
员工.java
@DynamoDBTable(tableName = "workplaces")
public class Employee() {
@DynamoDBHashKey(attributeName = "pk")
public String employeeId;
@DynamoDBRangeKey(attributeName = "sk")
public String sortKey
// Other attributes specific to employees, as well as getters and setters
}
Run Code Online (Sandbox Code Playgroud)
和 Organization.java:
@DynamoDBTable(tableName = "workplaces")
public class Organization() {
@DynamoDBHashKey(attributeName = "pk")
public String organizationId;
@DynamoDBRangeKey(attributeName = "sk")
public String sortKey
// Other attributes specific to organizations, as well as getters and setters
}
Run Code Online (Sandbox Code Playgroud)
我的查询访问模式之一是“检索组织的详细信息及其所有员工”。我设计的表架构允许我在单个查询中检索所有这些项目。
我正在努力解决如何使用 DynamoDbMapper 在 …