小编tre*_*nch的帖子

在Ubuntu 16.10上将PostgreSQL从9.6升级到10.0

我的数据库超过600 GB,我目前的数量只有1 TB,这可能限制了我的选择.

我的配置文件在这里:

/etc/postgresql/9.6/main
Run Code Online (Sandbox Code Playgroud)

我的数据库在这里:

/mnt/1TB/postgresql/9.6/main
Run Code Online (Sandbox Code Playgroud)

编辑 - 本指南适合我.我需要做的唯一的补充是手动下载libicu55并安装它,我必须为我的/ tmp /文件夹授予postgres 1777权限.我还将数据文件夹保存到不同的驱动器,所以我不得不使用命令:

pg_upgradecluster -m upgrade 10 main /mnt/1TB/postgresql/10
Run Code Online (Sandbox Code Playgroud)

https://gist.github.com/delameko/bd3aa2a54a15c50c723f0eef8f583a44

postgresql ubuntu

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

Flask - Active Directory身份验证

我做了一个小的Flask应用程序,我希望用户能够使用他们的Windows NT ID进行身份验证.我不是IT团队的一员,因此我对此领域的洞察力有限,而我的IT团队对Python没有经验.

配置这个有多容易?我试着做一些谷歌搜索,我看到了LDAP模块和Flask-Security.我希望有一个快速指南或指向一个特定的方向.

  • 有一个现有的Active Directory,我们的许多内部网站都使用NT身份验证
  • 我制作了一个Flask应用程序,我将移植到我们的内部网络
  • 我希望用户能够使用他们的NT ID登录该站点
  • 我需要知道我需要哪些信息(LDAP服务器和端口?)或我需要做些什么才能在不破坏任何安全协议的情况下正确配置

谢谢!

flask

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

使用.style选项或自定义CSS的pandas to_html?

我正在关注熊猫的风格指南,它运作得很好.

如何通过Outlook使用to_html命令保留这些样式?文档似乎有点缺乏我.

(df.style
   .format(percent)
   .applymap(color_negative_red, subset=['col1', 'col2'])
   .set_properties(**{'font-size': '9pt', 'font-family': 'Calibri'})
   .bar(subset=['col4', 'col5'], color='lightblue'))

import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.Subject = subject_name
mail.HTMLbody = ('<html><body><p><body style="font-size:11pt; 
font-family:Calibri">Hello,</p> + '<p>Title of Data</p>' + df.to_html(
            index=False, classes=????????) '</body></html>')
mail.send
Run Code Online (Sandbox Code Playgroud)

to_html文档显示我可以在to_html方法中放入一个类命令,但我无法弄明白.看起来我的数据帧似乎没有我指定的风格.

如果我尝试:

 df = (df.style
       .format(percent)
       .applymap(color_negative_red, subset=['col1', 'col2'])
       .set_properties(**{'font-size': '9pt', 'font-family': 'Calibri'})
       .bar(subset=['col4', 'col5'], color='lightblue'))
Run Code Online (Sandbox Code Playgroud)

然后df现在是一个Style对象,你不能使用to_html.

编辑 - 这是我目前正在修改我的表格.这有效,但我无法保留熊猫提供的.style方法的很酷的功能.

email_paragraph = """
<body style= "font-size:11pt; font-family:Calibri; text-align:left; margin: 0px auto" >
"""

email_caption = """ …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

将pandas数据帧转换为内存中类似文件的对象?

我每天在Postgres数据库中加载大约2到250万条记录.

然后,我使用pd.read_sql读取此数据,将其转换为数据帧,然后进行一些列操作和一些次要合并.我将此修改后的数据保存为单独的表供其他人使用.

当我做pd.to_sql时,它需要永远.如果我保存一个csv文件并在Postgres中使用COPY FROM,整个过程只需几分钟,但服务器在一台单独的机器上,在那里传输文件很痛苦.

使用psycopg2,看起来我可以使用copy_expert从批量复制中受益,但仍然使用python.我希望,如果可能的话,避免编写实际的csv文件.我可以在内存中使用pandas数据帧吗?

这是我的熊猫代码的一个例子.我想添加copy_expert或其他东西,以便在可能的情况下更快地保存这些数据.

    for date in required_date_range:
        df = pd.read_sql(sql=query, con=pg_engine, params={'x' : date})
        ...
        do stuff to the columns
        ...
        df.to_sql('table_name', pg_engine, index=False, if_exists='append',  dtype=final_table_dtypes)
Run Code Online (Sandbox Code Playgroud)

有人可以用示例代码帮助我吗?我更喜欢使用熊猫,在内存中做它会很好.如果没有,我将只写一个csv临时文件并以这种方式执行.

编辑 - 这是我的最终代码.每个日期(数百万行)只需要几百秒而不是几个小时.

to_sql ="""COPY%s FROM STDIN WITH CSV HEADER"""

def process_file(conn, table_name, file_object):
    fake_conn = cms_dtypes.pg_engine.raw_connection()
    fake_cur = fake_conn.cursor()
    fake_cur.copy_expert(sql=to_sql % table_name, file=file_object)
    fake_conn.commit()
    fake_cur.close()


#after doing stuff to the dataframe
    s_buf = io.StringIO()
    df.to_csv(s_buf) 
    process_file(cms_dtypes.pg_engine, 'fact_cms_employee', s_buf)
Run Code Online (Sandbox Code Playgroud)

psycopg2 pandas

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

基于时间戳不完全匹配的pandas合并

有哪些方法可用于合并时间戳不完全匹配的列?

DF1:

date    start_time  employee_id session_id
01/01/2016  01/01/2016 06:03:13 7261824 871631182
Run Code Online (Sandbox Code Playgroud)

DF2:

date    start_time  employee_id session_id
01/01/2016  01/01/2016 06:03:37 7261824 871631182
Run Code Online (Sandbox Code Playgroud)

我可以加入['date','employee_id','session_id'],但有时同一个员工在同一天会有多个相同的会话,这会导致重复.我可以删除发生这种情况的行,但如果我这样做,我将失去有效的会话.

如果DF1的时间戳距离DF2的时间戳<5分钟,并且session_id和employee_id也匹配,是否有一种有效的加入方式?如果存在匹配记录,则时间戳将始终稍晚于DF1,因为事件在将来某个时间点触发.

['employee_id', 'session_id', 'timestamp<5minutes']
Run Code Online (Sandbox Code Playgroud)

编辑 - 我以为有人会遇到这个问题.

我在想这样做:

  1. 在每个数据帧上记下我的时间戳
  2. 创建一个时间戳+ 5分钟(舍入)的列
  3. 创建一个时间戳列 - 5分钟(舍入)
  4. 创建一个10分钟的间隔字符串以加入文件

    df1['low_time'] = df1['start_time'] - timedelta(minutes=5)
    df1['high_time'] = df1['start_time'] + timedelta(minutes=5)
    df1['interval_string'] = df1['low_time'].astype(str) + df1['high_time'].astype(str)
    
    Run Code Online (Sandbox Code Playgroud)

有人知道如何将这5分钟的间隔绕到最近的5分钟标记处吗?

02:59:37 - 5分钟= 02:55:00

02:59:37 + 5分钟= 03:05:00

interval_string = '02:55:00-03:05:00'

pd.merge(df1, df2, how = 'left', on = ['employee_id', 'session_id', 'date', 'interval_string']
Run Code Online (Sandbox Code Playgroud)

有谁知道如何围绕这样的时间?这似乎可行.您仍然根据日期,员工和会话进行匹配,然后查找基本上在相同的10分钟间隔或范围内的时间

python pandas

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

将datetime列转换为不同的时区pandas

我有两个日期时间列,当我将它们读入内存但实际上在美国/东部时它们是天真的.我只想将这两列转换为US/Central.

我发现了一种有效的方法,但似乎我正在做一个解决方法.我将call_start和call_end列改为名为'start'和'end',因此我最终没有重复的列名.然后,我为每个列创建了一个单独的datetimeindex并重置索引.

aht.set_index(pd.DatetimeIndex(aht['start']).tz_localize('US/Eastern').tz_convert('US/Central'), inplace = True, drop = True)
aht.index.names = ['call_start']
aht = aht.reset_index()
aht.set_index(pd.DatetimeIndex(aht['end']).tz_localize('US/Eastern').tz_convert('US/Central'), inplace = True, drop = True)
aht.index.names = ['call_end']
aht = aht.reset_index()
Run Code Online (Sandbox Code Playgroud)

我最终得到:

call_end    call_start  start   end
2016-01-13 06:05:01-06:00   2016-01-13 06:02:00-06:00   01/13/2016 07:02    01/13/2016 07:05
2016-01-13 06:07:00-06:00   2016-01-13 06:03:16-06:00   01/13/2016 07:03    01/13/2016 07:07
2016-01-13 06:09:13-06:00   2016-01-13 06:06:02-06:00   01/13/2016 07:06    01/13/2016 07:09
2016-01-13 06:17:51-06:00   2016-01-13 06:06:20-06:00   01/13/2016 07:06    01/13/2016 07:17
Run Code Online (Sandbox Code Playgroud)

这是最好的方法吗?所有其他数据都在中央时间,所以我只是想确保这个文件太合并,当我将文件合并在一起时更有意义.我不关心那里有实际的时区标记 - 有没有办法在我创建新列后轻松剥离它?

python pandas

9
推荐指数
1
解决办法
8924
查看次数

你可以附加.feather格式吗?

有没有办法使用pd.to_feather附加到.feather格式文件?

我也很好奇是否有人知道最大文件大小方面的一些限制,以及在读取.feather文件时是否可以查询某些特定数据(例如读取日期> 2017-03-31的行) ").

我喜欢能够存储我的数据帧和分类数据的想法.

pandas feather

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

气流系统调度程序无法正常工作

我让网络服务器正常工作,我的airflow-scheduler.service文件启动调度程序,它找到了我的dags等.但是,任务没有运行:

我看到有关/ bin/sh的错误消息

ERROR - failed to execute task Command 'exec bash -c run'
Run Code Online (Sandbox Code Playgroud)

我有我的sysconfig文件:

#!/bin/bash
PATH=/opt/anaconda/anaconda3/envs/airflow_env/bin/airflow
AIRFLOW_CONFIG=/mnt/var/airflow/airflow.cfg
AIRFLOW_HOME=/mnt/var/airflow
Run Code Online (Sandbox Code Playgroud)

还有我的airflow-scheduler.service文件:

#!/bin/bash
[Unit]
Description=Airflow scheduler daemon
After=network.target postgresql.service
Wants=postgresql.service

[Service]
EnvironmentFile=/etc/sysconfig/airflow
User=airflow
Group=airflow
Type=simple
ExecStart=/opt/anaconda/anaconda3/envs/airflow_env/bin/airflow scheduler
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

这是记录我得到的bash错误的journalctl记录:

[2017-10-30 18:36:13,764] {base_executor.py:50} INFO - Adding to queue: airflow run user_presence_raw_etl transform_raw_user_presence 2017-10-30T14:00:00 --local -sd /mnt/var/airflow/dags/bin/user_p
Oct 30 18:36:13  airflow[4742]: [2017-10-30 18:36:13,765] {jobs.py:1443} INFO - Heartbeating the executor
Oct 30 18:36:13  airflow[4742]: [2017-10-30 18:36:13,783] {local_executor.py:45} INFO - LocalWorker running airflow …
Run Code Online (Sandbox Code Playgroud)

airflow apache-airflow

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

气流任务引用多个先前的任务?

有没有办法让我的任务需要完成多个仍然能够独立完成的上游任务?

  • download_fcr --> process_fcr --> load_fcr
  • download_survey --> process_survey --> load_survey

create_dashboard应该需要 load_fcr 和 load_survey 才能成功完成。

我不想强制“调查”任务链中的任何内容要求完成“fcr”任务链中的任何内容。我希望它们并行处理并且即使失败也能完成。但是,仪表板任务需要在开始之前完成加载到数据库。

fcr *-->*-->*
             \
               ---> create_dashboard
                /
survey *-->*-->*
Run Code Online (Sandbox Code Playgroud)

directed-acyclic-graphs airflow

7
推荐指数
2
解决办法
6330
查看次数

FutureWarning:元素比较失败; 返回标量

我收到一个警告,我想检查一下是否会破坏.我在很多情况下使用这样的np.where(对我来说,类似于excel中的if语句).是否有更好或更多的pythonic或pandas方法来做到这一点?我试图将一个维度变成我可以轻松进行数学运算的东西.

df['closed_item'] = np.where(df['result']=='Action Taken', 1, 0)

FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  result = getattr(x, name)(y)


INSTALLED VERSIONS
------------------
python: 3.5.1.final.0
python-bits: 64
OS: Windows
OS-release: 10

pandas: 0.18.0
nose: 1.3.7
pip: 8.1.0
setuptools: 20.2.2
Cython: 0.23.4
numpy: 1.11.0
scipy: 0.17.0
statsmodels: 0.6.1
xarray: None
IPython: 4.0.0
sphinx: 1.3.1
patsy: 0.4.0
dateutil: 2.4.2
pytz: 2015.7
blosc: None
bottleneck: None
tables: 3.2.2
numexpr: 2.5.1
matplotlib: 1.5.1
openpyxl: 2.2.6
xlrd: 0.9.4
xlwt: …
Run Code Online (Sandbox Code Playgroud)

python pandas

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