小编chr*_*ris的帖子

将图像直接从URL转换为base64而不保存为Python文件的方法

我想将基于Web的图像转换为base64.我现在知道如何将图像保存为.jpg文件,然后使用base64库将.jpg文件转换为base64字符串.

我想知道我是否可以先跳过保存图像的步骤?谢谢!

python base64 jpeg

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

postgres在一个upsert语句中的多个冲突

我在同一个表上有两个独特的约束,我想在该表上做一个upsert语句.

是否可以在upsert中指定两个冲突?我看到了这个:如何在Postgres中关于2列中的一列冲突?

但我的问题稍微复杂一些,因为其中一个独特的约束是另一个唯一约束的子集.即

unique_constraint_1 =(col_1)unqiue_constraint_2 =(col_1,col_2)

INSERT INTO table (col_1, col_2, col_3) VALUES (val_1, val_2, val_3) ON CONFLICT (what do I put here to account for both constraints?) DO NOTHING; 
Run Code Online (Sandbox Code Playgroud)

谢谢!

postgresql

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

python是否相当于Javascript的'btoa'

我试图找到与javascript函数'btoa'完全相同的函数,因为我想将密码编码为base64.看来有很多选项,如下所示:

https://docs.python.org/3.4/library/base64.html

在python中是否有与'btoa'完全相同的东西?

python base64

8
推荐指数
2
解决办法
5418
查看次数

Python的禅:错误绝不应该默默传递.为什么zip工作方式如此?

我在我的代码中使用python的函数zip(主要用于创建如下所示的dicts)

dict(zip(list_a, list_b)) 
Run Code Online (Sandbox Code Playgroud)

我发现它确实很有用,但有时它让我感到沮丧,因为我最终得到的情况是list_a与list_b的长度不同.zip只是继续将两个列表拉到一起,直到它达到一个与较短列表长度相同的压缩列表,忽略了较长列表的其余部分.这似乎应该在大多数情况下被视为错误,根据python的zen,它永远不应该默默地传递.

鉴于这是一个完整的功能,我很好奇为什么它是这样设计的?如果您尝试将两个不同长度的列表压缩在一起,为什么不将其视为错误?

python

8
推荐指数
2
解决办法
327
查看次数

设计更改电子邮件不会更新电子邮件

我正在尝试允许用户更改其设计用作其唯一用户名的电子邮件地址.即使更新没有出现错误,也不会对数据库中用户的电子邮件地址进行任何更改.

以下是代码的相关部分:

形成:

<%= f.fields_for :user_account, @user.user_account do |user_account| %> 
<p>Edit email address for account: <%=  @user.user_account.email %></p> 
<div class="field">
  <%= user_account.label :new_email %><br />
  <%= user_account.text_field :email, autocomplete: "off", value: nil %>
</div>
<div class="field">
  <%= user_account.label :password %> <i>(please confirm the password associated with this account)</i><br />
  <%= user_account.password_field :current_password, autocomplete: "off" %>
</div>
<%= hidden_field_tag 'form', 'email' %>
<div class="actions">
  <%= user_account.submit "Edit" %>
</div>
Run Code Online (Sandbox Code Playgroud)

控制器:

def update
respond_to do |format|
if params[:form] == 'email'
    if @user.user_account.valid_password?(params[:user][:user_account_attributes][:current_password]) …
Run Code Online (Sandbox Code Playgroud)

devise ruby-2.0 ruby-on-rails-4

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

python proxy-auth中的phantomjs + selenium无效

我正在尝试使用selenium + phantomjs设置webscraping的代理.我正在使用python.

我在很多地方都看到phantomjs中存在一个bug,因为proxy-auth不起作用.

from selenium.webdriver.common.proxy import *
from selenium import webdriver
from selenium.webdriver.common.by import By
service_args = [
'--proxy=http://fr.proxymesh.com:31280',
'--proxy-auth=USER:PWD',
'--proxy-type=http',
]

driver = webdriver.PhantomJS(service_args=service_args)
driver.get("https://www.google.com")
print driver.page_source
Run Code Online (Sandbox Code Playgroud)

代理网格建议使用以下代码:

page.customHeaders = {'Proxy-Authorization':'Basic'+ btoa('USERNAME:PASSWORD')};

但我不知道如何将其转换为python.

这就是我目前拥有的:

from selenium import webdriver
import base64
from selenium.webdriver.common.proxy import *
from selenium import webdriver
from selenium.webdriver.common.by import By

service_args = [
'--proxy=http://fr.proxymesh.com:31280',
'--proxy-type=http',
]

headers = { 'Proxy-Authorization': 'Basic ' +   base64.b64encode('USERNAME:PASSWORD')}

for key, value in enumerate(headers):
    webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.{}'.format(key)] = value

driver = webdriver.PhantomJS(service_args=service_args)
driver.get("https://www.google.com") …
Run Code Online (Sandbox Code Playgroud)

python proxy selenium phantomjs

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

celery 工人的 rabbitmq 循环消耗

我正在使用 RabbitMQ 代理,并且有一个订阅该代理的 Celery 工人。从我的测试来看,RabbitMQ 似乎按 FIFO 顺序处理消息。因为一个队列已经被填充,然后另一个,然后另一个,依此类推,我的工作人员消耗了队列 1 中的所有消息,并且只有在队列 1 完成后才移动到队列 2。

是否有可能改变这种行为?我希望 Celery 工人以循环方式消费,即消费来自队列 1 的消息,然后消费来自队列 2 的消息,依此类推,只有在从每个队列消费了一条消息后才返回队列 1其他队列。

rabbitmq celery

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

是否有可能在 postgres 中捕获外键违规

我正在尝试将数据插入具有外键约束的表中。如果在我插入的行中存在约束违规,我想删除该数据。

问题是每次我违反约束时,postgres 都会返回一个错误。我是否可以在插入语句中包含一些语句,例如“ON FOREIGN KEY CONSTRAINT DO NOTHING”?

编辑:

这是我正在尝试执行的查询,其中 info 是一个字典:

cursor.execute("INSERT INTO event (case_number_id, date, \
session, location, event_type, worker, result) VALUES \
(%(id_number)s, %(date)s, %(session)s, \
%(location)s, %(event_type)s, %(worker)s, %(result)s) ON CONFLICT DO NOTHING", info)
Run Code Online (Sandbox Code Playgroud)

当存在外键违规时会出错

postgresql psycopg2

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

如何有效地将一个Pandas Dataframe的每一列与另一个Dataframe的每一列相乘?

我试图将两个pandas数据帧相互增加.具体来说,我想将每列与其他df的每一列相乘.

数据帧是单热编码的,因此它们看起来像这样:

col_1, col_2, col_3, ...
 0      1      0 
 1      0      0 
 0      0      1 
 ...
Run Code Online (Sandbox Code Playgroud)

我可以使用for循环迭代每个列,但在python中计算成本很高,我希望有一种更简单的方法.

其中一个数据帧有500列,另一个有100列.

这是迄今为止我能写的最快的版本:

interact_pd = pd.DataFrame(index=df_1.index)
df1_columns = [column for column in df_1]
for column in df_2:
    col_pd = df_1[df1_columns].multiply(df_2[column], axis="index")
    interact_pd = interact_pd.join(col_pd, lsuffix='_' + column)
Run Code Online (Sandbox Code Playgroud)

我遍历df_2中的每一列并将该列的所有df_1相乘,然后将结果追加到interact_pd.我宁愿不使用for循环来做,因为这在计算上非常昂贵.有更快的方法吗?

编辑:例子

df_1:

1col_1, 1col_2, 1col_3
 0      1      0 
 1      0      0 
 0      0      1 
Run Code Online (Sandbox Code Playgroud)

df_2:

2col_1, 2col_2
 0      1       
 1      0       
 0      0      
Run Code Online (Sandbox Code Playgroud)

interact_pd:

1col_1_2col_1, 1col_2_2col_1,1col_3_2col_1, 1col_1_2col_2, 1col_2_2col_2,1col_3_2col_2

  0      0      0        0       1        0  
  1      0 …
Run Code Online (Sandbox Code Playgroud)

python numpy dataframe pandas

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

python selenium phantomJS新标签无效

我正在使用Selenium和PhantomJS webdriver,我发现我无法使用这个webdriver打开一个新标签.我正在使用标准线:

driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't') 
Run Code Online (Sandbox Code Playgroud)

我用的是Mac.

我也尝试过使用Firefox,它可以工作.

任何有助于它与PhantomJS合作的帮助将不胜感激!

python selenium phantomjs

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