小编Ale*_*oca的帖子

Python - 如何不按字母顺序对Sphinx输出进行排序

使用Sphinx for Python,如何避免在HTML中按字母顺序排序所有方法/函数名称?我希望它们保持与源代码中的顺序相同.

python python-sphinx

17
推荐指数
2
解决办法
3162
查看次数

Python 和 SQLAlchemy:如何检测数据库的外部变化

一些设备异步地将值存储在一个常见的远程 MySQL 数据库服务器上。

我想用 Python(可能还有 SQLAlchemy)编写一个主管应用程序来识别数据库上的外部 INSERT 事件并对最后一行的数据采取行动。这是为了避免长时间的手动测试以查看每个表是否正在定期更新或记录器是否崩溃。

有人可以告诉我在哪里可以在线搜索此类信息,甚至更好的是示例吗?

编辑

我已经使用 datetime 主键 ({date_time}) 定期读取所有表,加载每个表的最后一行,并与以前的值进行比较:

SELECT * FROM table ORDER BY date_time DESC LIMIT 1
Run Code Online (Sandbox Code Playgroud)

但它看起来很麻烦,并且不能保证在连续的数据库检查之间我不会丢失一些行。

该引擎是我无法升级的旧版 INNODB:我无法在架构中使用 UPDATE 字段,因为它根本不起作用。

改写我的问题: 如何使用类似守护程序的 Python 应用程序(休眠线程)侦听任何数据库事件并仅在发生某些事情时唤醒?

我还想避免 SQL 触发器,因为这太繁重而无法管理:表有数百个,并且根据活动记录器经常添加/删除它们。

我查看了 SQLAlchemy,但我能找到的所有参考资料,如果我没有误解的话,都是装饰器,用于对 SQLAlchemy 自己制作的 INSERT 进行操作。我没有找到任何关于数据库外部更改的信息。

关于示例请求:我对复制和粘贴不感兴趣,因为首先我想了解东西是如何工作的。我更喜欢(甚至是不完整的)示例,因为 SQLAlchemy 文档对于我的知识来说太深了,我根本无法将这些部分放在一起。

python mysql sqlalchemy

6
推荐指数
0
解决办法
1623
查看次数

如何通过SSH端口转发安装Python软件包?

我正在通过SSH和OPENVPN控制远程单元。

在远程单元上,我想使用pip但安装一些Python软件包:

  • 远程公司防火墙仅允许端口22上的流量(不允许443上的流量pip);
  • DNS没有安装在远程单元上;
  • 我无法修改任何OPENVPN设置(或者我想避免使用此选项,因为这意味着访问一些远程sysadmin并试图说服他必须更改配置);
  • 所有系统都是Linux(Ubuntu + Debian)。不涉及Windows。

减少尝试时间(我不是系统管理员,我对此主题的了解非常有限),其想法是打开一个显而易见的SSH端口转发:

ssh -R 9999:pypi.python.org:443 xxxx@XX.XX.XX.XX

然后,在远程单元上播放pip install

pip install pymodbus==1.3.2 --proxy localhost:9999

但是此命令返回:

Cannot fetch index base URL https://pypi.python.org/simple/
Could not find any downloads that satisfy the requirement pymodbus==1.3.2
Run Code Online (Sandbox Code Playgroud)

/root/.pip/pip.log 是:

  Getting page https://pypi.python.org/simple/pymodbus/
  Could not fetch URL https://pypi.python.org/simple/pymodbus/: connection error: ('Connection aborted.', BadStatusLine("''",))
  Will skip URL https://pypi.python.org/simple/pymodbus/ when looking for download links for pymodbus==1.3.2
  Getting page https://pypi.python.org/simple/
  Could not fetch URL https://pypi.python.org/simple/: connection …
Run Code Online (Sandbox Code Playgroud)

python ssh pip

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

如何扩展 Pandas Dataframe 中的 date_range?

有些数据每 5 秒收集一次,有时会丢失。

将它们加载到 Pandas 数据帧后,我想定义一个时间起点并准确提取 180 行(15 分钟 x 每分钟 12 个样本),无论起点如何。这些数据提供了一个绘图,并且始终保持相同的大小可以大大简化其余代码。

缺失的数据应该用 None 填充

我认为有一些我不知道的快捷方式可以做到这一点:

import pandas as pd
import datetime

dt = [
    "2018-02-08 13:45:05",
    "2018-02-08 13:45:10",
    "2018-02-08 13:45:25",
    "2018-02-08 13:45:30",
    "2018-02-08 13:45:35",
    "2018-02-08 13:45:40",
    "2018-02-08 13:45:50",
    "2018-02-08 13:45:55",
    "2018-02-08 13:46:00",
    "2018-02-08 13:46:05",
]

wl = [
    4737.25,
    4834.80,
    4885.53,
    5003.98,
    5031.08,
    5215.90,
    5147.65,
    5100.50,
    5038.94,
    5020.67,
]

df = pd.DataFrame({"dt":dt, "wl":wl}).set_index("dt")
df.index = pd.to_datetime(df.index)
df = df.resample("5s").mean()
print(df)
Run Code Online (Sandbox Code Playgroud)

返回:

                          wl
dt                          
2018-02-08 …
Run Code Online (Sandbox Code Playgroud)

date-range pandas datetimeindex

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

Matplotlib动画:通过子图的垂直光标线

[解决方案已添加到此帖子的EDIT部分中]

2个动画子图垂直堆叠。

我想根据鼠标位置在它们之间显示一条黑色垂直线。

到目前为止,移动鼠标时我只能完全弄乱这个身影。

如何清除更新之间的旧垂直线?

(只是出于好奇:由于具有鼠标移动控制功能,即使不移动鼠标,我的PC风扇在执行代码时也会发疯。鼠标是否“计算成本很高”?!?)

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from time import sleep

val1 = np.zeros(100)         
val2 = np.zeros(100)      

level1 = 0.2
level2 = 0.5

fig, ax = plt.subplots()

ax1 = plt.subplot2grid((2,1),(0,0))
lineVal1, = ax1.plot(np.zeros(100))
ax1.set_ylim(-0.5, 1.5)    

ax2 = plt.subplot2grid((2,1),(1,0))
lineVal2, = ax2.plot(np.zeros(100), color = "r")
ax2.set_ylim(-0.5, 1.5)    


def onMouseMove(event):
  ax1.axvline(x=event.xdata, color="k")
  ax2.axvline(x=event.xdata, color="k")



def updateData():
  global level1, val1
  global level2, val2

  clamp = lambda n, minn, maxn: max(min(maxn, n), minn) …
Run Code Online (Sandbox Code Playgroud)

python mouse animation matplotlib cursor

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

使用来自 Flask 的流数据刷新 Bokeh 0.12.6 图

努力使用 Bokeh 和 Flask 来绘制来自流媒体的数据。

数据源更新是由 Bokeh 安排的,而不是由 Bokeh 管理的(我看到它每秒完成一次)。

如何强制刷新图形(可能不是所有页面,因为最终版本中有多个图形)?

这是错误代码的精简版和可运行版本。欢迎任何想法。

# -*- coding: utf-8 -*-

import numpy as np
import pandas as pd

from bokeh.embed import components
from bokeh.plotting import figure
from bokeh.resources import INLINE
from bokeh.models.sources import ColumnDataSource

from flask import Flask, render_template_string
from flask_apscheduler import APScheduler
from apscheduler.triggers.interval import IntervalTrigger

html_template = """
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        {{ js_resources | safe }}
        {{ css_resources | safe }}
    </head>
    <body>
        <div>
            {{ plot_div.graph_1 …
Run Code Online (Sandbox Code Playgroud)

python flask bokeh

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

如何在Python中对装饰器进行分组

在Flask中,我为每个路由使用了一组装饰器,但代码是"丑陋的":

@app.route("/first")
@auth.login_required
@crossdomain(origin='*')
@nocache
def first_page:
    ....

@app.route("/second")
@auth.login_required
@crossdomain(origin='*')
@nocache
def second_page:
    ....
Run Code Online (Sandbox Code Playgroud)

我希望有一个声明,将所有这些声明与一个装饰器组合在一起:

@nice_decorator("/first")
def first_page:
    ....

@nice_decorator("/second")
def second_page:
    ....
Run Code Online (Sandbox Code Playgroud)

我尝试按照答案在Can中将两个装饰器合并为一个装饰器吗?但我不能让它工作:

def composed(*decs):
    def deco(f):
        for dec in reversed(decs):
            f = dec(f)
        return f
    return deco

def nice_decorator(route):
    composed(app.route(route),
             auth.login_required,
             crossdomain(origin="*"),
             nocache)

@nice_decorator("/first")
def first_page:
    ....
Run Code Online (Sandbox Code Playgroud)

因为这个错误,我不明白:

@nice_decorator("/first")
TypeError: 'NoneType' object is not callable
Run Code Online (Sandbox Code Playgroud)

根据其中一条评论,我使用另一种形式定义了它,但无法指定路由参数:

new_decorator2 = composed(app.route("/first"),
                          auth.login_required,
                          crossdomain(origin="*"),
                          nocache)
Run Code Online (Sandbox Code Playgroud)

是否可以使用参数定义单个装饰器?

python decorator flask python-decorators

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

如何完全离线使用 Plotly/Dash (Python)?

使用Dash 0.22.0Python 2.7.12。Plotly 是 3.1.0,但未在以下示例中使用。

我正在尝试创建一个应该完全脱机工作的最小应用程序。

而不是从远程加载的dash_html_components/bundle.jsdash_renderer/bundle.jsreact.min.jsreact-dom.min.js,我把自己的本地副本在/assets/js。我想告诉 Dash 只使用这些文件的本地副本。

我阅读了资产文件和索引自定义#286,如果我理解得很好,下面的例子应该可以工作:

# -*- coding: utf-8 -*-    
import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()

# default values
app.config.assets_folder = 'assets'     # The path to the assets folder.
app.config.include_asset_files = True   # Include the files in the asset folder
app.config.assets_external_path = ""    # The external prefix if serve_locally == False
app.config.assets_url_path …
Run Code Online (Sandbox Code Playgroud)

python plotly plotly-dash

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

Plotly Sankey:如何避免将所有节点自动放置到右侧?

桑基斯巧妙地填满了所有可用空间。

如果某些“分支”有 3 个级别(节点 0 -> 节点 1 -> 节点 3),而其他“分支”只有两个级别(节点 0 -> 节点 2),则最终节点(节点 2节点 3)垂直向右对齐。
我希望能够垂直对齐Node 1(不是Node 3!)和Node 2,如附件中的第二个图所示。

对我来说,以编程方式对齐所有节点是相当困难的,所以我想避免这种可能性。

即使在前一种情况下,也会出现问题(Jupyter Lab 的代码):

import plotly.graph_objects as go

sources = [ 0,  0,  1,  1]
targets = [ 1,  2,  3,  4]
values  = [59, 30, 29, 30]

labels = ['Node 0', 'Node 1', 'Node 2', 'Node 3', 'Node 4']

link = dict(source=sources, target=targets, value=values) …
Run Code Online (Sandbox Code Playgroud)

python plotly

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

P5.js 实例:导出到 SVG

p5.j​​s 草图正在创建一个图,我想将其导出为 SVG。

绘图不是静态的:必须对其进行修改(在演示中单击圆圈),然后按下Save SVG按钮保存。

P5.js 唉不提供beginDraw()endDraw()作为标准处理。

我正在使用https://github.com/zenozeng/p5.js-svg/,如本博客所述:https : //makeyourownalgorithmicart.blogspot.de/2018/03/creating-svg-with-p5js.html

保存静态 SVG(无需用户交互)很容易:取消注释p.SVG并且p.save()代码有效:

<html>
<head>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.1/p5.min.js"></script>
    <script type="text/javascript" src="https://github.com/zenozeng/p5.js-svg/releases/download/v0.5.2/p5.svg.js"></script>
</head>
<body>

    <script>

        let colors = ["red", "orange", "yellow", "lime", "green", "blue", "fuchsia"];
        let idx = 0;

        let sketch = function (p) {

            p.setup = function () {
                p.createCanvas(400, 400); // (400, 400, p.SVG);  <--------------
                p.noLoop();
            };

            p.draw = function () {

                p.background("white");
                p.fill(colors[idx]);
                p.stroke("black");
                p.strokeWeight(3);
                p.ellipse(200, …
Run Code Online (Sandbox Code Playgroud)

svg export p5.js

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

pandas groupby:每组的前 3 个值

pandas groupby中发布了一个新的更通用的问题:每个组中的前 3 个值并存储在 DataFrame 中,并且已在那里回答了一个可行的解决方案。

\n\n

在此示例中,我创建了一个数据框df,其中包含一些间隔 5 分钟的随机数据。\n我想创建一个数据框gdf分组 df),其中列出每小时的3 个最高值。

\n\n

即:从这一系列值

\n\n
                     VAL\nTIME                    \n2017-12-08 00:00:00   29\n2017-12-08 00:05:00   56\n2017-12-08 00:10:00   82\n2017-12-08 00:15:00   13\n2017-12-08 00:20:00   35\n2017-12-08 00:25:00   53\n2017-12-08 00:30:00   25\n2017-12-08 00:35:00   23\n2017-12-08 00:40:00   21\n2017-12-08 00:45:00   12\n2017-12-08 00:50:00   15\n2017-12-08 00:55:00    9\n2017-12-08 01:00:00   13\n2017-12-08 01:05:00   87\n2017-12-08 01:10:00    9\n2017-12-08 01:15:00   63\n2017-12-08 01:20:00   62\n2017-12-08 01:25:00   52\n2017-12-08 01:30:00   43\n2017-12-08 01:35:00   77\n2017-12-08 01:40:00   95\n2017-12-08 01:45:00   79\n2017-12-08 01:50:00   77\n2017-12-08 01:55:00    5\n2017-12-08 02:00:00   78\n2017-12-08 02:05:00   41\n2017-12-08 02:10:00   10\n2017-12-08 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas pandas-groupby

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