小编kay*_*kay的帖子

如何在sqlalchemy中加入同一个表

我正在尝试加入sqlalchemy中的同一个表.这是我尝试过的最小版本:

#!/usr/bin/env python
import sqlalchemy as sa
from sqlalchemy import create_engine
from sqlalchemy.orm import mapper, sessionmaker, aliased

engine = create_engine('sqlite:///:memory:', echo=True)

metadata = sa.MetaData()
device_table = sa.Table("device", metadata,
    sa.Column("device_id", sa.Integer, primary_key=True),
    sa.Column("name", sa.String(255), nullable=False),
    sa.Column("parent_device_id", sa.Integer, sa.ForeignKey('device.device_id')),
    )

class Device(object):
    device_id = None
    def __init__(self, name, parent_device_id=None):
        self.name = name
        self.parent_device_id = parent_device_id

    def __repr__(self):
        return "<Device(%s, '%s', %s)>" % (self.device_id,
                                           self.name,
                                           self.parent_device_id )

mapper(Device, device_table)

metadata.create_all(engine)

db_session = sessionmaker(bind=engine)()

parent = Device('parent')
db_session.add(parent)
db_session.commit()

child = Device('child', parent.device_id)
db_session.add(child) …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

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

在matlab中有效地计算汉明重量

鉴于MATLAB uint32被解释为一个位串,什么是一种有效和简洁的方法来计算字符串中有多少非零位?

我有一个工作,天真的方法循环比特,但这对我的需求来说太慢了.(使用std :: bitset count()的C++实现几乎立即运行).

我找到了一个非常好的页面列出了各种位计数技术,但我希望有一种简单的MATLAB方式.

http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetNaive


更新#1

刚刚实现了Brian Kernighan算法,如下所示:

w = 0;
while ( bits > 0 )
    bits = bitand( bits, bits-1 );
    w = w + 1;
end
Run Code Online (Sandbox Code Playgroud)

性能仍然很糟糕,超过10秒钟只计算4096 ^ 2重量计算.使用std :: bitset中的count()的我的C++代码在亚秒时间内执行此操作.


更新#2

这是我迄今为止尝试过的技术的运行时间表.我会在获得更多想法/建议时更新它.

矢量化Scheiner算法=> 2.243511秒
矢量化朴素bitget loop => 7.553345秒
Kernighan算法=> 17.154692秒
length(find(bitget(val,1:32)))=> 67.368278秒
nnz(bitget(val,1:32))=> 349.620259秒
Justin Scheiner的算法,展开循环=> 370.846031秒
Justin Scheiner的算法=> 398.786320秒
天真的比特环= = 456.016731秒
sum(dec2bin(val)=='1')=> 1069.851993秒


注释:MATLAB中的dec2bin()函数似乎执行得很差.它运行得非常慢.

注释:"Naive bitget loop"算法实现如下:

w=0;
for i=1:32
   if bitget( val, i ) == 1
       w = …
Run Code Online (Sandbox Code Playgroud)

matlab bit-manipulation bitstring hammingweight

14
推荐指数
4
解决办法
8860
查看次数

lxml.etree,element.text不返回元素的整个文本

我通过xpath废弃了一些html,然后我转换成了etree.与此类似的东西:

<td> text1 <a> link </a> text2 </td>
Run Code Online (Sandbox Code Playgroud)

但是当我调用element.text时,我只得到text1(它必须在那里,当我在FireBug中检查我的查询时,元素的文本被突出显示,嵌入的锚元素之前和之后的文本......

python xml lxml elementtree xml.etree

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

为什么__sync_add_and_fetch适用于32位系统上的64位变量?

请考虑以下压缩代码:

/* Compile: gcc -pthread -m32 -ansi x.c */
#include <stdio.h>
#include <inttypes.h>
#include <pthread.h>

static volatile uint64_t v = 0;

void *func (void *x) {
    __sync_add_and_fetch (&v, 1);
    return x;
}

int main (void) {
    pthread_t t;
    pthread_create (&t, NULL, func, NULL);
    pthread_join (t, NULL);
    printf ("v = %"PRIu64"\n", v);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我有一个uint64_t我想以原子方式递增的变量,因为该变量是多线程程序中的计数器.为了实现原子性,我使用了GCC的原子内置.

如果我编译amd64系统(-m64),生成的汇编代码很容易理解.通过使用a lock addq,处理器保证增量是原子的.

 400660:       f0 48 83 05 d7 09 20    lock addq $0x1,0x2009d7(%rip)
Run Code Online (Sandbox Code Playgroud)

但是相同的C代码在ia32系统(-m32)上产生了非常复杂的ASM代码:

804855a:       a1 28 a0 04 …
Run Code Online (Sandbox Code Playgroud)

c x86 gcc synchronization

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

在g ++中是在后台使用pthreads的C++ 11线程模型?

我只是尝试着我的手g++ 4.6C++11功能.每次我使用-std=c++0xflag 编译一个简单的线程代码时,它都会因为分段错误而崩溃,或者只是抛出一些奇怪的异常.

我读了一些与C++11线程有关的问题,我意识到,我还需要使用-pthreadflag来正确编译代码.使用-pthread工作正常,我能够运行线程代码.

我的问题是,C++11多线程模型是否Pthreads在后台使用?还是从头开始写的?

我不知道是否有任何成员是gcc贡献者,但我只是好奇.

c++ g++ pthreads c++11

14
推荐指数
2
解决办法
8239
查看次数

元编程:动态声明一个新的结构

是否可以即时声明一个新类型(一个空的struct或没有实现的struct)?

例如

constexpr auto make_new_type() -> ???;

using A = decltype(make_new_type());
using B = decltype(make_new_type());
using C = decltype(make_new_type());

static_assert(!std::is_same<A, B>::value, "");
static_assert(!std::is_same<B, C>::value, "");
static_assert(!std::is_same<A, C>::value, "");
Run Code Online (Sandbox Code Playgroud)

一个“手动”解决方案是

template <class> struct Tag;

using A = Tag<struct TagA>;
using B = Tag<struct TagB>;
using C = Tag<struct TagC>;
Run Code Online (Sandbox Code Playgroud)

甚至

struct A;
struct B;
struct C;
Run Code Online (Sandbox Code Playgroud)

但是对于模板/ meta,一些魔术make_new_type()功能会很好。

有状态的元编程格式不正确,这样的事情是否可能呢?

c++ templates metaprogramming stateful compile-time-constant

14
推荐指数
2
解决办法
2231
查看次数

如何获取字符串列的sqlalchemy长度

考虑这个简单的表定义(使用SQLAlchemy-0.5.6)

from sqlalchemy import *

db = create_engine('sqlite:///tutorial.db')

db.echo = False  # Try changing this to True and see what happens

metadata = MetaData(db)

user = Table('user', metadata,
    Column('user_id', Integer, primary_key=True),
    Column('name', String(40)),
    Column('age', Integer),
    Column('password', String),
)

from sqlalchemy.ext.declarative import declarative_base

class User(declarative_base()):

    __tablename__ = 'user'
    user_id = Column('user_id', Integer, primary_key=True)
    name = Column('name', String(40))
Run Code Online (Sandbox Code Playgroud)

我想知道列名的最大长度是多少,例如来自用户表和用户(声明性类)

print user.name.length
print User.name.length
Run Code Online (Sandbox Code Playgroud)

我试过(User.name.type.length)但它抛出异常

Traceback (most recent call last):
  File "del.py", line 25, in <module>
    print User.name.type.length
  File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.5.6-py2.5.egg/sqlalchemy/orm/attributes.py", line 135, in …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

13
推荐指数
1
解决办法
8398
查看次数

在SSL连接中禁用弱密码

我使用函数SSL_CTX_set_cipher_list来设置SSL连接支持的密码.传递给SSL_CTX_set_cipher_list以禁用弱密码的参数.

我试过传球 ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH

但它似乎没有用.

我的工具检测以下弱密码报告仍然启用

** SSLv3:DES-CBC-SHA - ENABLED - WEAK 56 bits **

** TLSv1:DES-CBC-SHA - ENABLED - WEAK 56 bits **

** SSLv2:RC4-MD5 - ENABLED - WEAK 128 bits **
** SSLv2:RC2-CBC-MD5 - ENABLED - WEAK 128 bits **
** SSLv2:RC4-64-MD5 - ENABLED - WEAK 64 bits **
** SSLv2:DES-CBC-MD5 - ENABLED - WEAK 56 bits **
** SSLv2:EXP-RC4-MD5 - ENABLED - WEAK 40 bits **
** SSLv2:EXP-RC2-CBC-MD5 - ENABLED - WEAK 40 bits **
** SSLv2:DES-CBC3-MD5 - …

ssl openssl cryptography elliptic-curve

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

SQLAlchemy如何使用timezone = UTC加载日期(没有时区存储的日期)

我有一个模型,其日期列定义为:

created_on = db.Column(db.DateTime, default=db.func.now(), nullable=False)
Run Code Online (Sandbox Code Playgroud)

日期与tz_info = None,这是正确的,因为日期存储没有时区信息.

如果我打印日期:

print(my_object.created_on.isoformat())
Run Code Online (Sandbox Code Playgroud)

我得到这种格式

2014-04-26T17:46:27.353936
Run Code Online (Sandbox Code Playgroud)

我想要一个UTC时区指标,例如:

2014-04-26T17:46:27.353936Z
Run Code Online (Sandbox Code Playgroud)

有没有办法在架构配置中定义此行为?

SQLAlchemy有,timezone = Boolean

sqlalchemy.types.DateTime(时区=假)

因为我希望存储没有时区.

python sqlalchemy flask-sqlalchemy

13
推荐指数
2
解决办法
7545
查看次数

SqlAlchemy将新的Field添加到类中并在表中创建相应的列

我想在现有的映射类中添加一个字段,如何自动更新sql表.如果将字段添加到类中,sqlalchemy是否提供了使用新列更新数据库的方法.

python sqlalchemy

12
推荐指数
2
解决办法
6823
查看次数