小编Den*_*ach的帖子

Python Itertools.Permutations()

为什么itertools.permutations()返回每个排列的字符或数字列表,而不是只返回一个字符串?

例如:

>>> print([x for x in itertools.permutations('1234')])
>>> [('1', '2', '3', '4'), ('1', '2', '4', '3'), ('1', '3', '2', '4') ... ]
Run Code Online (Sandbox Code Playgroud)

为什么不归还呢?

>>> ['1234', '1243', '1324' ... ]
Run Code Online (Sandbox Code Playgroud)

python python-3.x

28
推荐指数
2
解决办法
6万
查看次数

WSlI中的httplib CannotSendRequest错误

我和Django使用了两个不同的python oauth库来通过twitter进行身份验证.使用WSGI进行apache设置.当我重新启动服务器时,一切都运行良好大约10分钟,然后httplib似乎锁定(请参阅以下错误).

我只运行了1个进程和1个WSGI线程,但这似乎没有任何区别.

我无法弄清楚为什么它会锁定并给出这个CannotSendRequest错误.我花了很多时间来解决这个令人沮丧的问题.任何有关它的提示/建议将不胜感激.

File "/usr/lib/python2.5/site-packages/django/core/handlers/base.py", line 92, in get_response
  response = callback(request, *callback_args, **callback_kwargs)

File "mypath/auth/decorators.py", line 9, in decorated
  return f(*args, **kwargs)

File "mypath/auth/views.py", line 30, in login
  token = get_unauthorized_token()

File "/root/storm/eye/auth/utils.py", line 49, in get_unauthorized_token
  return oauth.OAuthToken.from_string(oauth_response(req))

File "mypath/auth/utils.py", line 41, in oauth_response
  connection().request(req.http_method, req.to_url())

File "/usr/lib/python2.5/httplib.py", line 866, in request
  self._send_request(method, url, body, headers)

File "/usr/lib/python2.5/httplib.py", line 883, in _send_request
  self.putrequest(method, url, **skips)

File "/usr/lib/python2.5/httplib.py", line 770, in putrequest
  raise CannotSendRequest()
Run Code Online (Sandbox Code Playgroud)

CannotSendRequest

python twitter wsgi oauth httplib

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

Python中的spaceite的Sqlite load_extension失败

我正在尝试使用Spatialite beta版本3.0,因为我在64位计算机上使用Windows 7.

sqlite3.OperationalError: The specified module could not be found.尝试加载时始终遇到可怕的错误 libspatialite-4.dll.

我尝试过以下方法:

  • put libspatialite-4.dll和所有其他dll在同一个文件夹中
  • 使用dll的完整路径
  • 将dll位置添加到'PATH'环境变量
  • 将dll位置作为Python代码的一部分附加到sys.path属性
  • 复制c:\windows\system32文件夹中的所有dll (完成重启机器)
  • 复制c:\windows\sysWoW64文件夹中的所有dll (完成重启机器,这应该是32位dll,但我还是尝试过)

我的代码如下:

import sqlite3
conn = sqlite3.connect(":memory:")
conn.enable_load_extension(True)
conn.execute('SELECT load_extension("libspatialite-4.dll")')
Run Code Online (Sandbox Code Playgroud)

注意 - 我也试过了完整的路径而没有运气.我记得在Windows XP 32位上遇到了同样的问题.我得到它的工作,但不记得我做了什么:(

UPDATE

我已经在32位Windows 7上测试了设置,并将所有dll放在System32文件夹中.因此,这表明64位设置存在一些问题.可能是我需要另一个版本的MSVC(我不认为Spatialite网站说哪个是必要的,所以我可能只需要猜测 - 我安装了MSVC2010)?

python sqlite spatialite

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

在SQLAlchemy中按小时分组?

如何按SQLAlchemy中datetime列的小时部分对查询结果进行分组?

python sqlite sqlalchemy

8
推荐指数
3
解决办法
6879
查看次数

发现SQLAlchemy对象的引用

我有很多模型类,它们之间有关系,需要编辑CRUD接口.问题是某些对象无法删除,因为有其他对象引用它们.有时我可以设置ON DELETE规则来处理这种情况,但在大多数情况下,我不希望自动删除相关对象,直到它们被手动解除绑定.无论如何,我想向编辑器呈现一个引用当前查看对象的对象列表,并突出显示那些因FOREIGN KEY约束而无法删除的对象.是否有自动发现引用的现成解决方案?

更新

这个任务似乎很常见(例如django ORM显示所有依赖关系),所以我想知道它还没有解决方案.

建议有两个方向:

  1. 枚举当前对象的所有关系并通过它们backref.但并不能保证所有关系都已backref定义.而且,有些情况下backref毫无意义.虽然我可以在任何地方定义它,但我不喜欢这样做而且它不可靠.
  2. (由van和stephan建议)检查所有MetaData对象表并从其foreign_keys属性中收集依赖关系(sqlalchemy_schemadisplay的代码可以用作示例,感谢stephan的评论).这将允许捕获之间的所有依赖关系,但我需要的是模型类之间的依赖关系.一些外键在中间表中定义,并且没有与它们对应的模型(secondary在关系中使用).当然,我可以走得更远并找到相关的模型(必须找到一种方法来做到这一点),但它看起来太复杂了.

下面是我用作解决方案的基本模型类(为声明性扩展而设计)的方法.它并不完美,不符合我的所有要求,但它适用于我项目的当前状态.结果被收集为字典字典,因此我可以通过对象及其属性显示它们.我没有带还未决定它是否是好主意,因为参照网址列表有时是巨大的,我不得不把它限制在一个合理的数值.

def _get_referers(self):
    db = object_session(self)
    cls, ident = identity_key(instance=self)
    medatada = cls.__table__.metadata
    result = {}
    # _mapped_models is my extension. It is collected by metaclass, so I didn't
    # look for other ways to find all model classes.
    for other_class in medatada._mapped_models:
        queries = {}
        for prop in class_mapper(other_class).iterate_properties:
            if not …
Run Code Online (Sandbox Code Playgroud)

python orm sqlalchemy

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

Python MD5,SHA512(+ salt)加密的问题

我试图理解Linux如何在etc/shadow文件上加密我们的密码,所以我没有新的虚拟"测试"用户进行一些测试:

user: newuser
密码: usrpw123
生成的盐: Ii4CGbr7

操作系统在etc/shadow文件中使用SHA512加密系统($ 6 $)使我成为以下行: newuser:$ 6 $ Ii4CGbr7 $ IOua8/oPV79Yp.BwzpxlSHjmCvRfTomZ.bhEvjZVxxxqvv82lZVrEtWQQej2pOWMdN7hvKwNgvCXKFQm5CB /:15069:0:99999:7 :::

现在,我从python中获取SHA512模块并试试这个:

import hashlib
m = hashlib.sha512()
m.update('Ii4CGbr7'+'usrpw123')
print m.hexdigest
Run Code Online (Sandbox Code Playgroud)

这给了我以下哈希作为结果: c73156daca3e31125ce457f1343201cc8a26400b2974440af2cc72687922b48b6631d21c186796ea2756ad987a996d2b261fe9ff3af4cc81e14c3029eac5df55

正如你所看到的,它与/ etc/shadow文件中的另一个不同,我不知道为什么我使用相同的salt +密码来生成哈希.
有人能帮我一把,或多或少解释一下为什么会这样吗?

而且,为什么/ etc/shadow文件生成带有一些点(.)的哈希?
谢谢

python md5 salt sha sha512

6
推荐指数
2
解决办法
4786
查看次数

SqlAlchemy如何处理表定义中的唯一约束

我有一个表格,其中包含以下声明性定义:

class Type(Base):
    __tablename__ = 'Type'
    id = Column(Integer, primary_key=True)
    name = Column(String, unique = True)
    def __init__(self, name):
        self.name = name
Run Code Online (Sandbox Code Playgroud)

列"name"有一个唯一的约束,但我能做到

type1 = Type('name1')
session.add(type1)
type2 = Type(type1.name)
session.add(type2)
Run Code Online (Sandbox Code Playgroud)

因此,可以看出,根本没有检查唯一约束,因为我已经在会话中添加了2个具有相同名称的对象.

当我这样做时session.commit(),我得到一个mysql错误,因为约束也在mysql表中.

是否有可能sqlalchemy提前告诉我,我无法制作或识别它,并且不会插入两个具有相同"名称"columm的条目?如果没有,我应该在内存中保留所有现有名称,以便在创建对象之前我可以检查它们是否存在吗?

sqlalchemy unique

6
推荐指数
2
解决办法
9750
查看次数

SQLAlchemy TypeDecorator不起作用

xml在我的postgresql数据库中使用,我需要一个自定义类型可以处理xmlSQLAlchemy中的数据.

所以我让XMLType课堂沟通xml.etree,但它没有按照我的意愿工作.

这是我写的代码:

import xml.etree.ElementTree as etree

class XMLType(sqlalchemy.types.TypeDecorator):

    impl = sqlalchemy.types.UnicodeText
    type = etree.Element

    def get_col_spec(self):
        return 'xml'

    def bind_processor(self, dialect):
        def process(value):
            if value is not None:
                return etree.dump(value)
            else:
                return None
        return process

    def process_result_value(self, value, dialect):
        if value is not None:
            value = etree.fromstring(value)
        return value
Run Code Online (Sandbox Code Playgroud)

它适用于检索值和结果处理.但是当我试图插入一行时,我得到一个错误(当然,我把bodyas xml.etree.ElementTree.Element对象):

IntegrityError: (IntegrityError) null value in column "body" violates not-null 
constraint "INSERT INTO comments (id, author_id, look_id, body, …
Run Code Online (Sandbox Code Playgroud)

xml postgresql sqlalchemy elementtree

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

三星智能电视,PlayDRM和HLS

我们在三星智能电视的应用程序中使用Apple HLS或渐进式下载来获取/播放视频.我们希望转向受DRM保护的内容,我们在SDK文档中看到PlayReady DRM支持三星智能电视.

我们不明白的是我们可以使用什么样的协议?2011和2012型号的PlayReady DRM(SDK 2.5和3.0)是否仅支持Microsoft Smooth Streaming,还是与Apple HLS兼容?

为了能够通过DRM三星智能电视保护内容,我们需要使用哪种流媒体协议?

任何信息,经验都受到高度赞赏.

javascript drm http-live-streaming smooth-streaming samsung-smart-tv

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

只有加注的例外是否有用?

例如,以下是django.templates.loader.app_directories.py中的一些代码.[1]

try:
    yield safe_join(template_dir, template_name)
except UnicodeDecodeError:
    # The template dir name was a bytestring that wasn't valid UTF-8.
    raise
Run Code Online (Sandbox Code Playgroud)

如果你抓住一个例外只是为了重新提升它,它的用途是什么?

[1] http://code.djangoproject.com/browser/django/trunk/django/template/loaders/app_directories.py

python exception-handling

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