小编abc*_*ccd的帖子

SqlAlchemy TIMESTAMP 'on update' 额外

我在 python3.4.3 上使用 SqlAlchemy 来管理 MySQL 数据库。我正在创建一个表:

from datetime import datetime

from sqlalchemy import Column, text, create_engine
from sqlalchemy.types import TIMESTAMP
from sqlalchemy.dialects.mysql import BIGINT
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
class MyClass(Base):

  __tablename__ = 'my_class'

  id = Column(BIGINT(unsigned=True), primary_key=True)
  created_at = Column(TIMESTAMP, default=datetime.utcnow, nullable=False)
  updated_at = Column(TIMESTAMP, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)
  param1 = Column(BIGINT(unsigned=True), server_default=text('0'), nullable=False)
Run Code Online (Sandbox Code Playgroud)

当我创建这个表时:

engine = create_engine('{dialect}://{user}:{password}@{host}/{name}'.format(**utils.config['db']))
Base.metadata.create_all(engine)
Run Code Online (Sandbox Code Playgroud)

我得到:

mysql> describe my_class;
+----------------+---------------------+------+-----+---------------------+-----------------------------+
| Field          | Type                | Null | Key | Default             | Extra                       | …
Run Code Online (Sandbox Code Playgroud)

python mysql sqlalchemy python-3.x sql-timestamp

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

Python循环遍历列表以在asyncio中获取api调用并保存结果

我还不完全理解 asyncio 和 aiohttp 是如何工作的。

我正在尝试从 URL 列表中发出一堆异步 api 请求,并将它们保存为变量,以便稍后处理它们。

到目前为止,我正在生成没有问题的列表并设置请求框架。

urls = []
for i in range(0,20):
    urls.append('https://api.binance.com/api/v1/klines?symbol={}&interval= 
    {}&limit={}'.format(pairs_list_pairs[i],time_period,
            pull_limit))

import asyncio
import aiohttp


async def request(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as resp:
            return await resp.text()


async def main():
    results = await asyncio.gather(
             request(urls[0]),
             request(urls[1]),
    )
    print(len(results))
    print(results)



loop = asyncio.get_event_loop()
try:
    loop.run_until_complete(main())
    loop.run_until_complete(loop.shutdown_asyncgens())
finally:
    loop.close()
Run Code Online (Sandbox Code Playgroud)

如果我使用索引手动一一输入我的请求(如下所示),我就可以发出请求。但问题是我的列表中有超过 100 个 api 请求,我不想手动输入这些请求。如何迭代我的列表?另外,如何将结果保存到变量中?当脚本结束时,它不会在任何地方保存“结果”。

async def main():
    results = await asyncio.gather(
             request(urls[0]),
             request(urls[1]),
    )
    print(len(results))
    print(results)
Run Code Online (Sandbox Code Playgroud)

下面是一些复制代码的示例 URL: …

python request python-asyncio aiohttp

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

Python dict.get()引发了KeyError

我迷失在这里,Python 2.7,我有一本字典mt,我使用的get()方法,文档说:

get(key[, default])如果key在字典中,则返回key的值,否则返回default.如果未给出default,则默认为None,因此此方法永远不会引发a KeyError.

但我还是得到了

 File "/home/ubuntu/subscription-workers/commands/dr/rebilling.py", line 48, in rebill
    if mt.get('is_rebill', 0) == 1:
 KeyError: 'is_rebill'
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

mt是正常的dict,有时没有钥匙.

python dictionary python-2.7

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

如何在 scikit-learn 中实现可调用距离度量?

我在 python 的 scikit learn 中使用聚类模块,我想使用归一化欧几里德距离。这个(我知道的)没有内置距离。这是一个列表

因此,我想使用可调用对象实现我自己的归一化欧几里得距离。该函数是我的distance模块的一部分,称为distance.normalized_euclidean_distance. 它采用三个输入: XY,和SD

但是,归一化欧几里得距离需要总体样本的标准差。但是,scipy 中的成对距离只允许两个输入:XY

我如何让它接受额外的论点?

我试着把它作为 a **kwarg,但这似乎不起作用:

cluster = DBSCAN(eps=1.0, min_samples=1,metric = distance.normalized_euclidean, SD = stdv)
Run Code Online (Sandbox Code Playgroud)

这里distance.normalized_euclidean是发生在两个数组,我写的功能,X以及Y并计算它们之间的归一化欧氏距离。

...但这会引发错误:

TypeError: __init__() got an unexpected keyword argument 'SD'
Run Code Online (Sandbox Code Playgroud)

使用附加关键字参数的方法是什么?

这里Any further parameters are passed directly to the distance function.,这让我认为这是可以接受的。

python scipy euclidean-distance keyword-argument scikit-learn

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

我怎么能用zip(),python

例如,我有这些变量

a = [1,2]
b = [3,4]
Run Code Online (Sandbox Code Playgroud)

如果我使用zip()它的功能,结果将是:

[(1, 3), (2, 4)]
Run Code Online (Sandbox Code Playgroud)

但我有这个清单:

a = [[1,2], [3,4]]
Run Code Online (Sandbox Code Playgroud)

而且,我需要和第一个结果一样:[(1, 3), (2, 4)].但是,当我这样做时:

zip(a)
Run Code Online (Sandbox Code Playgroud)

我明白了:

[([1, 2],), ([3, 4],)]
Run Code Online (Sandbox Code Playgroud)

我必须做什么?

python

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

从集合模块应用Counter后访问列表的内容

我已经将collections函数中的Counter函数应用到列表中.在我这样做之后,我不清楚新数据结构的内容将被表征为什么.我也不确定访问元素的首选方法是什么.

我做过类似的事情:

theList = ['blue', 'red', 'blue', 'yellow', 'blue', 'red']
newList = Counter(theList)
print newList
Run Code Online (Sandbox Code Playgroud)

返回:

Counter({'blue': 3, 'red': 2, 'yellow': 1})
Run Code Online (Sandbox Code Playgroud)

如何访问每个元素并打印出如下内容:

blue - 3
red - 2
yellow - 1
Run Code Online (Sandbox Code Playgroud)

python collections counter list

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

python:为什么random.shuffle会更改数组

我正在使用random.shuffle洗牌2D numpy数组.我遇到了以下问题:

import numpy as np
from random import shuffle as sf 

b = np.array([1,2,3,4,5])
print b
# [1 2 3 4 5]
sf(b)
print b
# [1 4 5 3 2]

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print a
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]
sf(a)
print a
# [[1 2 3]
#  [4 5 6]
#  [1 2 3]]
Run Code Online (Sandbox Code Playgroud)

结果表明,当改组一维数组时,一切都是正确的.但是在改组2D阵列时,结果变得奇怪.

为什么抛弃原始数组的第三行并将第一行重复两次?

我知道可以有解决方案来解决这个问题,例如首先洗牌指示行ID的一维数组,然后按照混洗ID的顺序提取二维数组.但我确实希望弄清楚random.shuffle我的代码的实现或错误会发生什么.

python arrays numpy shuffle

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

不推荐使用 mediaPlaybackRequiresUserAction 和 iOS 9

WKWebViewConfiguration

WKWebViewConfiguration

所以这是我的问题:

因为mediaPlaybackRequiresUserActioniOS 9 已弃用,mediaTypesRequiringUserActionForPlayback仅适用于 iOS 10+,我可以为 iOS 9 使用什么?

wkwebview wkwebviewconfiguration ios9

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

比较python中的日期,==有效,但<=产生错误

我想比较两个日期.此代码有效:

import datetime

todays_date = datetime.date.today()

date1 = datetime.date(2006, 3, 15)
date2 = datetime.date(2009, 4, 30)

print(date1 != date2)
print(date1 == 0)
Run Code Online (Sandbox Code Playgroud)

它产生:

True
False
Run Code Online (Sandbox Code Playgroud)

那些代码不起作用,我不知道为什么:

import datetime

todays_date = datetime.date.today()

date1 = datetime.date(2006, 3, 15)
date2 = datetime.date(2009, 4, 30)

print(date1 != date2)
print(date1 >= 0)
Run Code Online (Sandbox Code Playgroud)

它会产生以下错误:

File 'datetime.py', Line 363: AttributeError: 'int' object has no attribute '__name__'
Run Code Online (Sandbox Code Playgroud)

请注意,所有我改变的是==>=的,为什么不相等的比较结果TrueFalse,而不是在错误comparaison结果还大吗?

我将不胜感激任何帮助!

python datetime python-3.x

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

在GPU上运行时使用TensorFlow内存:为什么看起来并非所有内存都被使用?

这是我在此处发布的问题的后续跟踪:在AWS实例g2.2xlarge上使用TensorFlow运行卷积神经网络时出现大图像的内存错误

我使用TensorFlow在Python中构建了一个CNN模型,并在NVIDIA GRID K520 GPU上运行它.它可以在64x64图像下正常运行,但会产生128x128图像的内存错误(即使输入只包含1个图像).

错误说Ran out of memory trying to allocate 2.00GiB.2GiB是我第一个完全连接的层的大小(输入:128*128*2(channels)输出:) 128*128 * 4 bytes = 2.14748 GB = 2.0 GiB.

这里,我可以看到GRID K520具有8GB = 7.45GiB内存.当我开始运行我的代码时,我也看到了输出:Total memory: 3.94GiB, Free memory: 3.91GiB.

我的问题是,所有这些数字之间的关系是什么:如果GPU上有7.45GiB内存,为什么总内存只有3.94GiB,最重要的是,为什么GPU不能分配2GiB内存,这只占总数的一半以上记忆?(我不是计算机科学家,所以详细的答案很有价值.)

一些更具体的信息,以防它有用:我尝试使用allow_growthper_process_gpu_memory_fraction.仍然得到内存错误,但也有一些内存统计(如果有人可以向我解释这些数字,真的很感激):

allow_growth = True
Stats: 
Limit:                  3878682624
InUse:                  2148557312
MaxInUse:               2148557312
NumAllocs:                      13
MaxAllocSize:           2147483648

allow_growth = False
Stats: 
Limit:                  3878682624
InUse:                  3878682624
MaxInUse:               3878682624
NumAllocs:                      13
MaxAllocSize:           3877822976

per_process_gpu_memory_fraction = 0.5
allow_growth …
Run Code Online (Sandbox Code Playgroud)

python memory memory-management deep-learning tensorflow

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