我正在尝试使用SQLAlchemy将字节字符串存储在PostgreSQL数据库中.
我的模型看起来像这样:
class UserAccount(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String)
password_hash = db.Column(db.String)
password_salt = db.Column(db.String)
Run Code Online (Sandbox Code Playgroud)
我希望password_hash并且password_salt都是字节字符串(即str,因为我使用的是Python 2.7),但即使我将字节传递给它,SQLAlchemy似乎也将它们转换为unicode.我也试过convert_unicode=False在模型中使用,但我得到了相同的结果.
我在SQLAlchemy模型中用什么来存储字节?
我试图在APL的布尔向量中找到最长的1个连续链的长度.在Haskell中,如果我有一个由1和0表示的布尔列表,我可以这样做:
Prelude> scanl (\acc x -> x*(acc+1)) 0 [0,0,1,1,0,1,1,1,1,0,1]
[0,0,0,1,2,0,1,2,3,4,0,1]
Run Code Online (Sandbox Code Playgroud)
然后取一个最大值.
我试图在APL做类似的事情:
{?×?+1}\0 0 1 1 0 1 1 1 1 0 1
0 0 1 2 0 4 8 16 32 0 64
Run Code Online (Sandbox Code Playgroud)
这根本不是我期望的向量.我曾假设⍺会在扫描/缩小的上下文中引用累加器,而⍵会引用向量的下一个元素,但我的理解似乎有点过时了.这些简单的例子让我感到困惑:
{?}\1 1 1 1 1
1 1 1 1 1
{?+?}\1 1 1 1 1
1 2 4 8 16
{?×?}\1 1 1 1 1
1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
是否有可能(在实践中)在APL中使用用户定义的函数和扫描/缩小?如果是这样,它是如何工作的,⍺和what指的是什么?
据我了解,在对某个对象调用pickle.dumps时,它将调用该对象的__getstate__方法(如果有的话)以确定要腌制什么。
如果我创建一个类,例如:
class DictClass(dict):
def __getstate__(self):
print "pickling"
return self
Run Code Online (Sandbox Code Playgroud)
我得到这个结果:
>>> pickle.dumps(DictClass())
pickling
'ccopy_reg\n_reconstructor\np0...'
Run Code Online (Sandbox Code Playgroud)
我可以做同样的事情,将“ dict”替换为“ list”:
class ListClass(list):
def __getstate__(self):
print "pickling"
return self
>>> pickle.dumps(ListClass())
pickling
'ccopy_reg\n_reconstructor\np0...'
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用“设置”,则会发生一些不同的事情:
class SetClass(set):
def __getstate__(self):
print "pickling"
return self
>>> pickle.dumps(SetClass())
'c__main__\nSetClass...'
Run Code Online (Sandbox Code Playgroud)
__getstate__方法不会被调用。这是为什么,并且可以指定要腌制的集合的子类的哪一部分?