我想将基于Web的图像转换为base64.我现在知道如何将图像保存为.jpg文件,然后使用base64库将.jpg文件转换为base64字符串.
我想知道我是否可以先跳过保存图像的步骤?谢谢!
我在同一个表上有两个独特的约束,我想在该表上做一个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)
谢谢!
我试图找到与javascript函数'btoa'完全相同的函数,因为我想将密码编码为base64.看来有很多选项,如下所示:
https://docs.python.org/3.4/library/base64.html
在python中是否有与'btoa'完全相同的东西?
我在我的代码中使用python的函数zip(主要用于创建如下所示的dicts)
dict(zip(list_a, list_b))
Run Code Online (Sandbox Code Playgroud)
我发现它确实很有用,但有时它让我感到沮丧,因为我最终得到的情况是list_a与list_b的长度不同.zip只是继续将两个列表拉到一起,直到它达到一个与较短列表长度相同的压缩列表,忽略了较长列表的其余部分.这似乎应该在大多数情况下被视为错误,根据python的zen,它永远不应该默默地传递.
鉴于这是一个完整的功能,我很好奇为什么它是这样设计的?如果您尝试将两个不同长度的列表压缩在一起,为什么不将其视为错误?
我正在尝试允许用户更改其设计用作其唯一用户名的电子邮件地址.即使更新没有出现错误,也不会对数据库中用户的电子邮件地址进行任何更改.
以下是代码的相关部分:
形成:
<%= 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) 我正在尝试使用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) 我正在使用 RabbitMQ 代理,并且有一个订阅该代理的 Celery 工人。从我的测试来看,RabbitMQ 似乎按 FIFO 顺序处理消息。因为一个队列已经被填充,然后另一个,然后另一个,依此类推,我的工作人员消耗了队列 1 中的所有消息,并且只有在队列 1 完成后才移动到队列 2。
是否有可能改变这种行为?我希望 Celery 工人以循环方式消费,即消费来自队列 1 的消息,然后消费来自队列 2 的消息,依此类推,只有在从每个队列消费了一条消息后才返回队列 1其他队列。
我正在尝试将数据插入具有外键约束的表中。如果在我插入的行中存在约束违规,我想删除该数据。
问题是每次我违反约束时,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)
当存在外键违规时会出错
我试图将两个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) 我正在使用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合作的帮助将不胜感激!