小编tar*_*ras的帖子

python对象的sqlalchemy from_statement动态属性

我有这样的模型:

class Test(db.Model, UnicodeMixin):
    __tablename__ = 'test'

    id = db.Column(db.Integer, primary_key=True)

    subject = db.Column(db.String(512), nullable=False)

    additional = None

    def __unicode__(self):
        return u'<Test {0}>'.format(self.id)
Run Code Online (Sandbox Code Playgroud)

有些代码很难SELECT从db中使用其他动态数据来生成RAW SQL 。

例如,它像:

db.session.query(Test).from_statement("SELECT test.id AS test_id, test.subject AS test_subject, 99 AS additional FROM test").all()
Run Code Online (Sandbox Code Playgroud)

它生成python对象的列表Test,但是如何填充additional这些python对象的属性?

我不想在数据库中存储NULLadditional

我想用SQL创建动态附加数据并将其添加到python对象。

请帮忙。

谢谢。

python attributes sqlalchemy dynamic

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

Python 多处理:如何删除托管字典键?

我有一个由 管理的字典SyncManager,我正在使用.get().update()函数来检索和设置字典键和值。但是,该del dict[key]方法并未实施。有没有办法从托管字典键中删除键?

简单的例子:

mgr = multiprocessing.Manager()
shared_dict = mgr.dict()

shared_dict.update( {'key1' : 'value1'} )
print shared_dict.get('key1')

#Now let's delete key1
del shared_dict['key1']  #Nope!
shared_dict.__delitem__('key1')  #Also not allowed
Run Code Online (Sandbox Code Playgroud)

python dictionary multiprocessing python-multiprocessing

5
推荐指数
0
解决办法
1706
查看次数

lxml._ElementTree.getpath(element) 为非默认命名空间中的元素返回“*”而不是标签名称

请帮助getpath()getpath()xpath 中返回完整的标签名称或找到解决方法

我正在尝试为lxml.etree._ElementTree. ElementTree通过解析来自某些生产 WebService 的 600Kb 响应生成。

print elem.getroottree().getpath(elem)
Run Code Online (Sandbox Code Playgroud)

这是我得到的结果:

'/S:Envelope/S:Body/ns5:getPhysicalResponse/*[18]/*[12]/*[6]/*[2]'
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法发布原始 xml - 它包含专有的客户信息。此外,我尝试使用自动生成的具有 100 个嵌套级别的简单元素树来重现此结果,每个级别有 100 个子级,但没有运气 -getpath()返回带有完整标签名称的 xpath。

更新 查看lxml 源代码- 它指向库中的tree.h xmlGetNodePath方法libxml2。所以这实际上是libxml2行为。

更新 做更多的测试,我发现每次标签具有非默认命名空间时都会发生这种情况。

c++ python xpath lxml libxml2

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

将元数据存储在pandas DataFrame的列标签中是一个好主意吗?

我一直在讨论是否应该有一个专门存放MetaData在熊猫中的地方DataFrame,我个人觉得这个功能非常有用.

在未来的版本中实现之前,我一直在寻找2个解决方法,但它们中没有一个看起来真的令人满意.

由于我不能继承一个类DataFrame,我试图创建一个MyDataFrame包含a DataFrame并实现所有方法的类__add__,__mul__但是,考虑到可用于操作DataFrame的方法数量,这似乎是一种乏味的方法.

此外,我操作的数据源自物理硬件(频谱分析仪,示波器......),原则上,我希望有一组与数据帧的每一列相关联的元数据(测量带宽,平均数......).需要编码以保持与DataFrame结构一一对应的结构看起来很复杂(如果DataFrame得到转置怎么办?)

我发现一个优雅的解决方案是使用自定义对象而不是通常的Series对象名称.这些"MetaIndex"基本上是一个字符串+元数据,它将取代通常的列标签my_dataframe.columns.类定义看起来像这样:

class MetaIndex:
    def __hash__(self):
        return self.str.__hash__()

    def __eq__(self,other):
        return self.str == str(other)

    def __init__(self,st):
        self.str = format_name(st)
        self._meta = MetaData()

    def __repr__(self):
        return self.str


    def __str__(self):
        return self.str
Run Code Online (Sandbox Code Playgroud)

然后,当我保存DataFrame(在hdf5文件中)时,我将其更改MetaIndex为常规字符串,并分别保存每个列的元数据,当我加载数据时,我重新实例化数据帧的列,例如:

s.replace_names_by_meta_index()
    for c in s.columns:
        col = s[c]
        if col.meta is not None:
            col.meta.set(**f["meta"][str(c)])
Run Code Online (Sandbox Code Playgroud)

1)您是否认为这是一种可行的方法,或者这是一种边际和危险的方法?

2)此外,一个非常诱人的扩展是使MetaIndex继承自str.这样,自动完成仍然适用于IPython(my_dataframe.col1).然而,在这种情况下,一些简单的操作,如my_dataframe.T.T使 …

python metadata pandas

5
推荐指数
0
解决办法
1138
查看次数

使用并行python时记录

我正在使用并行python executePipeline多次执行一个大函数().此功能也使用多处理(使用multiprocessing模块).
我使用并行python模块在我的控制台上正确显示日志消息时遇到了一些麻烦.当我不使用它时,日志消息很好地显示.

下面是它的工作原理.我有一个服务器每次从客户端收到请求时都会调用一个worker:

job = self.server.job_server.submit(func = executeWorker, args = (config, ) )
Run Code Online (Sandbox Code Playgroud)

每次有来自客户端的新请求时,都会从新线程执行此函数.然后,worker正在executePipeline使用多处理调用正在执行不同processus 的函数.

SocketServer.TCPServer我使用线程的服务器.我使用根记录器在服务器中设置了一个记录器:

self.logger = logging.getLogger()
self.logger.setLevel(logging.INFO)
self.logger.addHandler(logging.StreamHandler() 
self.job_server = pp.Server(ncpus = 8) # for test
self.jobs = []
Run Code Online (Sandbox Code Playgroud)

当我运行我的服务器时,我只能从而executePipeline不是从子进程获取日志记录.此外,我只在作业结束时才记录执行管道,而不是在运行时.

这里还有工人代码.在"Executing pipeline with worker number "很好地显示在我的终端

'''
Setup logging
'''

logger = logging.getLogger()
logger.setLevel(logging.INFO)  

# worker name
publicIP = socket.gethostbyname(socket.gethostname()) 
pid = os.getpid()
workerID = unicode(str(publicIP) + ":" + str(pid))

logger.info( "Executing pipeline with worker {}".format(workerID)) …
Run Code Online (Sandbox Code Playgroud)

python logging parallel-python

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

如何为Windows的Python包安装正确安装C编译器?

我相信我没有正确安装我的C编译器.我正在尝试在我的Windows 8机器上安装一些Python 2.7软件包.我一直收到以下错误:

RuntimeError:破坏的工具链:无法链接简单的C程序.

Python安装正确,并且定期运行良好.我一直在使用该virutalenv软件包并在虚拟环境中工作.然后我尝试安装Cygwin,MinGW和MS Visual Studios 2012,这些似乎都没有virtualenv.我不确定我做错了什么,任何帮助都会很棒.

谢谢你,吉米

c python windows virtualenv

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

PyAudio alsa 错误消息

每次使用 PyAudio 播放声音时,我都会收到错误消息,并且无法抑制它们。

ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave                                                                                     
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
Cannot connect to server socket err = No such file or …
Run Code Online (Sandbox Code Playgroud)

python audio pyaudio

5
推荐指数
0
解决办法
3199
查看次数

Pandas:df_left.merge(df_right) 摘要统计

对于 Pandas:df.merge()方法,是他们获取合并摘要统计信息(例如匹配数、不匹配数等)的便捷方法。我知道这些统计数据取决于标志how='inner',但是知道使用内部联接等时“丢弃”了多少内容会很方便。我可以简单地使用:

df = df_left.merge(df_right, on='common_column', how='inner')
set1 = set(df_left[common_column].unique())
set2 = set(df_right[common_column].unique())
set1.issubset(set2)   #True No Further Analysis Required
set2.issubset(set1)   #False
num_shared = len(set2.intersection(set1))
num_diff = len(set2.difference(set1))
# And So on ...
Run Code Online (Sandbox Code Playgroud)

但认为这可能已经实施了。我是否错过了它(即类似report=True会返回的合并new_dataframe以及报告系列或数据框)

python pandas

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

keras:使用 get_weights 函数提取权重

我想提取 1d CNN 层的权重,并了解如何准确计算预测值。我无法使用get_weights()函数的权重重新生成预测值。

为了说明我的理解,这里有一个小数据集。

n_filter = 64
kernel_size = 10
len_timeseries = 123
n_feature = 3
X = np.random.random(sample_size*len_timeseries*n_feature).reshape(sample_size,len_timeseries,n_feature)
y = np.random.random(sample_size*(len_timeseries-kernel_size+1)*n_filter).reshape(sample_size,
                                                                                  (len_timeseries-kernel_size+1),
                                                                                  n_filter)
Run Code Online (Sandbox Code Playgroud)

现在,创建一个简单的一维 CNN 模型,如下所示:

model = Sequential()
model.add(Conv1D(n_filter,kernel_size,
                 input_shape=(len_timeseries,n_feature)))
model.compile(loss="mse",optimizer="adam")
Run Code Online (Sandbox Code Playgroud)

拟合模型并预测如下值X

model.fit(X,y,nb_epoch=1)
y_pred = model.predict(X)
Run Code Online (Sandbox Code Playgroud)

的维度y_pred(1000, 114, 64)应该的。

现在,我想重现y_pred[irow,0,ilayer]]使用存储在model.layer. 由于只有单层,len(model.layer)=1. 所以我从第一层和唯一层中提取权重为:

weight = model.layers[0].get_weights()
print(len(weight))
> 2 
weight0 = np.array(weight[0])
print(weight0.shape)
> (10, 1, 3, 64)
weight1 = np.array(weight[1])
print(weight1.shape)
> (64,) …
Run Code Online (Sandbox Code Playgroud)

python keras deeplearning4j keras-layer

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

dropbox API v2使用python上传大文件

我正在尝试通过Dropbox API v2上传大文件(~900MB)但我收到此错误:

requests.exceptions.ConnectionError :('Connection aborted.',ConnectionResetError(104,'peer reset by peer'))

它适用于较小的文件.

我在文档中发现我需要使用files_upload_session_start方法打开上传会话,但是我对此命令有错误,我无法继续使用.._ append方法.

我怎么解决这个问题?文档中没有信息.我正在使用Python 3.5.1和使用pip安装的最新dropbox模块.

这是我正在运行的代码:

c = Dropbox(access_token)
f = open("D:\\Programs\\ubuntu-13.10-desktop-amd64.iso", "rb")
result = c.files_upload_session_start(f)
f.seek(0, os.SEEK_END)
size = f.tell()
c.files_upload_session_finish(f,     files.UploadSessionCursor(result.session_id, size), files.CommitInfo("/test900.iso"))
Run Code Online (Sandbox Code Playgroud)

python dropbox-api

4
推荐指数
2
解决办法
3414
查看次数