小编Red*_*ron的帖子

mysql Tinyint作为无符号

我试着写t = t | 128但是超出了范围错误.我怀疑tinyint已签名.但是http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html表示它可能是未签名的(下方).但它没有说明如何使它无符号.我如何能?

Type     Storage    Minimum Value        Maximum Value
         (Bytes)    (Signed/Unsigned)   (Signed/Unsigned)
TINYINT     1           -128                    127
                          0                     255
SMALLINT    2          -32768                   32767
                          0                     65535
MEDIUMINT   3          -8388608                8388607
                          0                   16777215
INT         4         -2147483648            2147483647
                          0                  4294967295
BIGINT      8      -9223372036854775808  9223372036854775807
                          0             18446744073709551615
Run Code Online (Sandbox Code Playgroud)

mysql

20
推荐指数
2
解决办法
3万
查看次数

计算两个1D线段的重叠距离

尝试构建一个函数,该函数将返回2个线段之间的总重叠距离,由start和end int表示.

目前我有这个:我在某个地方上网,

def overlap(min1, max1, min2, max2):
    """returns the overlap between two lines that are 1D"""
    result = None
    if min1 >= max2 or min2 >= max1: result =  0
    elif min1 <= min2:
        result = max1 - min2
    else: result = max2 - min1
    return result
Run Code Online (Sandbox Code Playgroud)

这适用于0 100,0,20的情况,它返回100.这显然是错误的.有一种简单的计算方法可以返回正确的值吗?

python geometry

16
推荐指数
2
解决办法
6576
查看次数

将不同的URL映射到同一视图

这似乎微不足道,但我找不到这个问题的有效答案.

假设我有两个不同的链接'/'和'/ home',我希望它们指向同一个视图.(这表示用户是打开xyz.com还是xyz.com/home,将显示相同的页面).

在金字塔我试过

config.add_route('home','/')
config.add_route('home','home/')
Run Code Online (Sandbox Code Playgroud)

但它引发了以下异常

pyramid.exceptions.ConfigurationConflictError: Conflicting configuration actions
  For: ('route', 'home')
Run Code Online (Sandbox Code Playgroud)

我该如何实现呢?

python pyramid

12
推荐指数
1
解决办法
2190
查看次数

使用配置文件登录Python - 使用通过代码在文件中定义的处理程序

我正在使用python的日志模块.如何从代码中访问配置文件中定义的处理程序.作为一个例子,我有一个定义的记录器和两个处理程序 - 一个用于屏幕,另一个用于文件.我想根据用户偏好使用适当的处理程序(无论他们是想登录屏幕还是文件).如何从配置文件中定义的记录器动态添加和删除配置文件中定义的处理程序?

[loggers]

keys=root,netmap

[handlers]
keys=fil,screen

[logger_root]
level=NOTSET
handlers=

[logger_netmap]
level=INFO
handlers=fil,screen
qualname=netmap

[formatters]
keys = simple

[formatter_simple]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=

[handler_fil]
class=handlers.RotatingFileHandler
args=('file.log','a','maxBytes=10000','backupCount=5')
formatter=simple

[handler_screen]
class=StreamHandler
args = (sys.stdout,)
formatter=simple
Run Code Online (Sandbox Code Playgroud)

根据用户是否使用-v运行程序,我需要使用File或Screen Handler之一.如何从netmap记录器添加或删除fil或screen处理程序?

python logging python-2.x

11
推荐指数
1
解决办法
1万
查看次数

在div中嵌入一个svg

我正在尝试创建一个填充的svg三角形,它将被放置在页面的某个位置.

为了实现这一点,我将svg包装在div中并适当地放置div.但是,svg总是在div之外呈现.如何获取div中呈现的svg元素?

由于脚本和模板限制,我无法使用<object><embed>标记

示例HTML

<div id="container">
    <div id="inner_container">
        <svg height="6" width="6">
            <path d="M 0 6 L 3 0 L 6 6 L 0 6"/>
        </svg>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

和CSS

#container {width:100px; height:25px; border:1px solid green;}
#container #inner_container {width:6px; height:6px; border:1px solid red;}
#inner_container  svg path {fill:black;}
Run Code Online (Sandbox Code Playgroud)

填充的三角形应该在红色矩形内,但在外面呈现

JsFiddle上看到它

html css svg

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

修改jinja2中的字典属性

假设我将字典传递给我的jinja2模板.
在视图中我有类似的东西

d = {}
#set other template stuff into d
get_params['cri'] = 'time'
get_params['order'] = 'asc'
d['get_params'] = get_params
return d
Run Code Online (Sandbox Code Playgroud)

在模板中,我需要更改get_params的键值.合乎逻辑的事情

{% set get_params.cri='src' %}
Run Code Online (Sandbox Code Playgroud)

失败并出错

TemplateSyntaxError: expected token '=', got '.'
Run Code Online (Sandbox Code Playgroud)

我的问题是如何修改传递给jinja2中字典的值

(这个问题已在这里提出,但我觉得答案令人困惑,它只能回答合并部分)

答案编辑:

Jinja2提供'do'扩展.要将该扩展添加到金字塔,请在__init__.py文件中执行以下操作

#This line is alreadythere
config.include('pyramid_jinja2')
#Add this line
config.add_jinja2_extension('jinja2.ext.do')
Run Code Online (Sandbox Code Playgroud)

在模板中

{% do get_params.update({'cri':'src'}) %}
Run Code Online (Sandbox Code Playgroud)

python dictionary jinja2 pyramid

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

无论时区如何,都将MySQL日期时间分组为间隔

之前已经问这个问题,但我面临的问题略有不同.

我有一个表记录事件并存储他们的时间戳(作为日期时间).我需要能够将时间分解成块并获得在该间隔中发生的事件的数量.间隔可以是自定义的(比如5分钟到1小时甚至更长).

显而易见的解决方案是将datetime转换为unix_timestamp,将其除以间隔中的秒数,取其底层函数并将其乘以秒数.最后将unix_timestamp转换回日期时间格式.

这适用于小间隔.

select 
from_unixtime(floor(unix_timestamp(event.timestamp)/300)*300) as start_time,
count(*) as total 
from event 
where timestamp>='2012-08-03 00:00:00' 
group by start_time;
Run Code Online (Sandbox Code Playgroud)

这给出了正确的输出

+---------------------+-------+
| start_time          | total |
+---------------------+-------+
| 2012-08-03 00:00:00 |    11 |
| 2012-08-03 00:05:00 |     4 |
| 2012-08-03 00:10:00 |     4 |
| 2012-08-03 00:15:00 |     7 |
| 2012-08-03 00:20:00 |     8 |
| 2012-08-03 00:25:00 |     1 |
| 2012-08-03 00:30:00 |     1 |
| 2012-08-03 00:35:00 |     3 | …
Run Code Online (Sandbox Code Playgroud)

mysql datetime timestamp group-by

8
推荐指数
1
解决办法
3171
查看次数

为什么str不能得到第二个参数,当__str__可以?

我决定使用str来打印树状结构树的内容,使用类似的东西

print tree
Run Code Online (Sandbox Code Playgroud)

树的节点都是用户创建的类的对象,我重载他们的__str__魔术方法,以便在缩进t标签之后使用子节点的str

def __str__ (self,t=0) :`
    return t*'\t' + str(self.label) +':' +'\n'+ str(self.l,t+1)+'\n'+str(self.right,t+1)+'\n'
Run Code Online (Sandbox Code Playgroud)

但是我无法str使用该t参数调用,但我可以调用.node.__ str__(t=4)不是str,只是快捷方式的魔术方法?或者是因为解析器拒绝额外的参数str而不检查魔术方法?

PS我对行为感兴趣.我知道这不是打印树的最佳方式,它是一个黑客;)

python string methods tree operator-overloading

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

在金字塔下为jinja2添加自定义过滤器

之前已经问这个问题,但是接受的解决方案(由问题海报自己给出)说我们可以直接将新过滤器添加到jinja2.filter.FILTER.

但是在jinja2文档中,建议将过滤器添加到环境中.

我正在金字塔下开发一个应用程序,需要定义我的自定义过滤器并执行以下操作.

from jinja2 import Environment

#Define a new filter
def GetBitValue(num,place):
    y = (num >> (place-1)) & 1
    return y

env = Environment()
env.filters['getbitvalue'] = GetBitValue
Run Code Online (Sandbox Code Playgroud)

这个代码片段应该放在哪里?

我尝试将它放在视图文件中但显然不起作用.

如果我把它__init__.py放进去,我该如何确保jinja2接收它?我的意思是如何将env金字塔下的jinja2设置发送回去?

python jinja2 pyramid

5
推荐指数
2
解决办法
2913
查看次数

将版本号表示为正则表达式

我需要将版本号表示为正则表达式.广义的定义是

  1. 仅包含数字
  2. 允许任意数量的小数点(但不是连续的)
  3. 最大数量没有限制

所以2.3.4.1,2.3,2,9999.9999.9999都是有效的,而2..,2.3.不是.

我写了以下简单的正则表达式

'(\d+\.{0,1})+'
Run Code Online (Sandbox Code Playgroud)

在python中使用它与re模块并在'2.6.31'中搜索给出

>>> y = re.match(r'(\d+\.{0,1})+$','2.6.31')
>>> y.group(0)
'2.6.31'
>>> y.group(1)
'31'
Run Code Online (Sandbox Code Playgroud)

但如果我命名该组,那么命名组只有31.

我的正则表达式是正确的还是可以调整/改进?它目前没有处理这个2.3.案子.

python regex

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