- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 sqlalchemy-0.7 中有一个带有日期列的类。我可以要一个 column_property 吗?或任何类似的东西让我很容易通过它过滤?怎么写呢?
IE,我想要(声明性语法):
class Foo(Base):
id = Column(Integer, primary_key=True)
date = Column(Date(), nullable=False)
year = column_property(something here)
# later on
q = session().query(Foo).filter_by(year=2011)
最佳答案
当然你可以定义这样的属性:
year = column_property(extract('year', date))
但你真的需要它吗?您可以通过重写过滤条件来定义没有此类属性的年份过滤:
query(Foo).filter(extract('year', Foo.date)==2011)
更新
虽然这个解决方案看起来很简单,但它也有一个缺点:WHERE 子句中的这种条件永远不会在日期字段上使用索引。有很多行和条件的高选择性,这将对性能产生很大影响。因此,您可能希望重写导致 RANGE INDEX SCAN 而不是 FULL TABLE SCAN 的条件(如 Simon 的评论中所建议):
start = datetime.date(year, 1, 1)
end = datetime.date(year, 12, 31)
query(Foo).filter(Foo.date.between(start, end))
定义具有这种行为的属性也是可能的,你只需要重新定义比较器:
class YearComparator(ColumnProperty.Comparator):
def __eq__(self, year):
if isinstance(year, int):
column = self.prop.columns[0].get_children()[0].expr
start = datetime.date(year, 1, 1)
end = datetime.date(year, 12, 31)
return column.between(start, end)
else:
# It can be a column or exression which we can't handle such way
return ColumnProperty.Comparator.__eq__(self, year)
# __lt__, __gt__ etc. are very similar to __eq__
def year_property(date_column, **kwargs):
kwargs.setdefault('comparator_factory', YearComparator)
return column_property(extract('year', date_column), **kwargs)
class Foo(Base):
__tablename__ = 'Foo'
id = Column(Integer, primary_key=True)
date = Column(Date, index=True)
year = year_property(date)
关于python - SA : can I have a 'year' column_property for a Date column?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5545245/
我需要本地化所有可能性: 1年, 2 年,然后……(不超过任何数字)。 1个月, 2 个月,然后……(不超过任何数字)。 在各种语言中,“年”这个词会根据它前面的数字而变化。比如法语: 22 年 =
本文整理了Java中org.joda.time.Years.years()方法的一些代码示例,展示了Years.years()的具体用法。这些代码示例主要来源于Github/Stackoverflow
年.hs: year = year + 1 main = print year 这不是尾递归调用: year = year + 1 year = (year + 1) + 1 year = ((yea
我有一个表,其中包含来自流量计的数据,排列如下: Water.Year May Jun Jul Aug Sep Oct Nov Dec Jan Feb
本文整理了Java中com.meidusa.amoeba.sqljep.function.Year.year()方法的一些代码示例,展示了Year.year()的具体用法。这些代码示例主要来源于Git
我是 Java 新手,希望获得一些有关正在尝试解决的问题的建议。我必须编写一个方法来生成唯一的编号。 因此,以字符串表示的唯一数字将有 10 个字符。 #1. First 2 will represe
谁有权威的答案,哪个性能更好? GROUP BY YEAR(FROM_UNIXTIME(col)) /* or */ GROUP BY EXTRACT(YEAR FROM FROM_U
我从今年过去了 20 年。但目前我希望它显示为年复一年。例如:1992 - 1999 1999 - 2002 2003 - 2015 这是我的代码。 function populatedropdown
我目前能够将 Landsat 图像拆分为 LC80440142014093LGN00.tar.gz 的日期信息, 我把它分成 2014093 .现在我需要将其更改为 Excel 或 Open Offi
我有一些数据想总结一下。我想对所有列进行总结,固定 YEAR 列。即对于一个变量我可以做: df %>% group_by(LG1, YEAR) %>% summarise(Freq = n(
我有一个独特的问题,我根本无法解决。 所以我在 SQL Server 2005 中,我得到了以下要处理的数据: FISCAL_YEAR_START_MONTH INT(财政年度的第一个月) COUNT
我有一些数据想总结一下。我想对所有列进行总结,固定 YEAR 列。即对于一个变量我可以做: df %>% group_by(LG1, YEAR) %>% summarise(Freq = n(
我想从指定年份的表中获取所有数据。但问题是我将日期设置为 DATETIME 类型。 我正在尝试类似的东西: SELECT * FROM table WHERE entrytim
使用日期选择器,年份下拉菜单默认只显示 10 年。用户必须单击最后一年才能添加更多年份。 我们如何将初始范围设置为 100 年,以便用户默认看到一个大列表? function InitDate
我必须将我的数据帧从当前格式转换为新格式(请参阅下面的图像或结构)。我不知道如何才能做到这一点。我想要每个 ID 一年,从 2013 年到 2018 年(所以每个 ID 有 6 行,每年一个)。日期是
在学习了 Hadley 的书并在 SO 上搜索之后,我创建了一个由年和月矩阵组成的热图,颜色根据时间序列变量的百分比变化而变化。热图和我用来获取它的代码如下所示。我还有一些我自己无法解决的问题。 1)
在电子表格上,我有各种谷歌分析 channel (有机、直接、移动、桌面等)的月度报告表。对于每个 channel ,我都有另一列自动计算 Y-o-Y EX 的增长百分比:(A12-A1)/A1。然后
我有几个气象变量的时间序列数据集。时间数据记录在三个单独的列中: 年份(例如 2012) 一年中的第几天(例如 261 代表闰年的 9 月 17 日) 时:分(例如 1610) 有没有一种方法可以合并
YEAR(x) 和 EXTRACT(YEAR FROM x) 在 MySQL 中是否等价? 似乎在我所有的实验中都有,但我不确定是否没有任何边缘情况。 举个例子:这两个查询返回完全相同的结果。但我不确
我读到“将日期字符串转换为mysql日期时间字段”:但这对我没有帮助 所以我想做的是将dat文件读入mysql中的空表。 table CLIMBED(TRIP_ID int,PEAK VARCHAR(
我是一名优秀的程序员,十分优秀!