小编ise*_*rds的帖子

matplotlib补丁绘图中的工件

在matplotlib中绘制小补丁对象时,由于显示分辨率而引入了伪像.使用抗锯齿并不能解决问题.

有这个问题的解决方案吗?

import matplotlib.pyplot as plt
import matplotlib.patches as patches

ax = plt.axes()

for x in range(-10,11):
    for y in range(-10,11):
        rect = patches.Rectangle((x, y), width=0.1, height=0.1, color='k',aa=True)
        ax.add_patch(rect)

plt.xlim([-30, 30])
plt.ylim([-30, 30])
plt.show()
Run Code Online (Sandbox Code Playgroud)

产量

matplotlib

7
推荐指数
1
解决办法
562
查看次数

SQLAlchemy中抽象类Model和Mixin的区别

SQLAlchemy 中的 Mixin 可用于在模型之间共享功能和属性。但据我了解,它还实现了使用抽象类的继承。所以我的问题是以下两种实现之间有什么区别:

使用抽象模型:

from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.ext.declarative import declared_attr,

db = SQLAlchemy()

class BaseModel(db.Model):
    __abstract__ = True

    @declared_attr
    def iid(cls):
        return db.Column(
            UUID(as_uuid=True),
            primary_key=True,
            default=uuid.uuid4,
            unique=True,
            nullable=False,
        )

    @declared_attr
    def created_on(cls):
        return db.Column(db.DateTime, server_default=db.func.now())

    @declared_attr
    def updated_on(cls):
        return db.Column(
            db.DateTime, server_default=db.func.now(), server_onupdate=db.func.now()
        )

    def save(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()


class SomeEntity(BaseModel):
     some_field = db.Column(db.String)
Run Code Online (Sandbox Code Playgroud)

使用混合:

from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.ext.declarative import declared_attr,

db = SQLAlchemy()

class Mixin(object):
    @declared_attr
    def iid(cls):
        return db.Column(
            UUID(as_uuid=True), …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask-sqlalchemy

7
推荐指数
0
解决办法
508
查看次数

表单无效时保留上载的文件(FileField)

给定一个模型称为必填字段numberClearableFileInput的FileField称为upload_file

class ExampleModel(models.Model):
    number = models.IntegerField()
    upload_file = models.FileField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

在我看来,在POST上,如果是表单,is_valid那么当我返回同一页面时,我可以填充FileField的清除部分。

def example_view(request):
    context = RequestContext(request)
    if request.method == 'POST':
        form = ExampleForm(request.POST, request.FILES)
        if form.is_valid():
            form_instance = form.save()
            form = ExampleForm(instance=form_instance)
            # or alternatively, for just the upload file field
            form = ExampleForm(initial={'upload_file': form_instance.upload_file})
        else:
            form_instance = form.save(commit=False)
            form = ExampleForm(initial={'upload_file': form_instance.upload_file})
            # unfortunately, this also does not work:
            form = ExampleForm(initial={'upload_file': form.fields['upload_file']})
    else:
        form = ExampleForm() …
Run Code Online (Sandbox Code Playgroud)

django

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

使用Selenium/PhantomJS进行网络捕获

我想使用Selenium和python捕获我正在浏览的网站的流量,因为使用代理的流量将是https不会让我走得太远.

我的想法是运行带有selenium的phantomJS并使用phantomJS来执行脚本(不是在页面上使用webdriver.execute_script(),而是在phantomJS本身上).我在考虑netlog.js脚本(来自https://github.com/ariya/phantomjs/blob/master/examples/netlog.js).

因为它在命令行中这样工作

phantomjs --cookies-file=/tmp/foo netlog.js https://google.com
Run Code Online (Sandbox Code Playgroud)

用硒必须有类似的方法吗?

提前致谢

更新:

用browsermob-proxy解决了它.

pip3 install browsermob-proxy
Run Code Online (Sandbox Code Playgroud)

Python3代码

from selenium import webdriver
from browsermobproxy import Server

server = Server(<path to browsermob-proxy>)
server.start()
proxy = server.create_proxy({'captureHeaders': True, 'captureContent': True, 'captureBinaryContent': True})

service_args = ["--proxy=%s" % proxy.proxy, '--ignore-ssl-errors=yes']
driver = webdriver.PhantomJS(service_args=service_args)

proxy.new_har()
driver.get('https://google.com')
print(proxy.har)  # this is the archive
# for example:
all_requests = [entry['request']['url'] for entry in proxy.har['log']['entries']]
Run Code Online (Sandbox Code Playgroud)

python selenium python-3.x phantomjs

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

导入非常大的 SQL 文件 (MySQL) 时的单次提交

我正在尝试将大型 SQL 文件(> 2.5 Gb)还原到 Windows 上的 MySQL 数据库中。

我无法编辑这些文件以SET autocommit=0;在文件开头添加文本(这是缩短导入时间所必需的)。

我也无法使用source,因为这会输出到屏幕(非常慢)并且即使文件中有任何错误,执行也会继续。例如:

mysql> CREATE DATABASE IF NOT EXISTS dbname;
mysql> USE dbname;
mysql> SET autocommit=0;
mysql> source file.sql;
mysql> COMMIT;
Run Code Online (Sandbox Code Playgroud)

是否可以在导入仅适用于当前会话的 SQL 文件之前和之后运行任意命令?我已经尝试了以下两种方法,但都不适用于 Windows(在这两种情况下,第二个操作都被忽略):

mysql -u username -p -e "SET autocommit=0;" dbname < file.sql
Run Code Online (Sandbox Code Playgroud)

或者,

mysql -u username -p < initial_commands.sql < file.sql
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我不想在autocommit每次执行此操作时更改全局设置,然后必须记住将其更改回来(我也不确定在没有 final 的情况下这是否有效COMMIT;)。

也许有一种方法可以使用BEGIN ... COMMIT;而不是关闭自动提交?

我很乐意接受必须做这种事情的人的任何建议!

mysql windows mariadb

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

从python内部执行Django的sqlsequencereset代码

Django的sqlsequencereset命令返回重置数据库中的序列所需的SQL命令。

默认情况下,其他类似的管理命令会自动执行SQL(并且只有指定--dry-run选项时,才打印输出)。

在命令行中,您可以使用以下命令执行返回的命令:

python manage.py sqlsequencereset app1_name app2_name | python manage.py dbshell
Run Code Online (Sandbox Code Playgroud)

但是...有没有办法sqlsequencereset从python内部直接执行返回的代码?

django python-2.7

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

无法在 Visual Studio 中禁用扩展

我无法禁用/删除 Visual Studio 2015 中的某些扩展,包括我自己安装的“多语言应用程序工具包”和“MySQL for Visual Studio”等扩展。在某些情况下,扩展和更新管理器中的DisableUninstall按钮都是灰色的。

Visual Studio 扩展 - 显示灰色禁用和卸载选项

我试过以管理员身份启动 VS,并在安全模式下启动 VS(使用devenv.exe /safemode)。

为什么不能禁用某些扩展,安全禁用它们的正确方法是什么?

visual-studio multilingual-app-toolkit visual-studio-2015

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

使用 python 的就地添加和解压的元组

python在解包元组时无法执行就地添加操作是否有原因,有没有一种简单的方法可以解决这个问题?

例如

>>> x, y = (5, 0)
>>> x, y += (1, 8)
SyntaxError: illegal expression for augmented assignment
Run Code Online (Sandbox Code Playgroud)

替代方案是丑陋的,对于代码维护来说不是很明显:

>>> x, y = (5, 0)
>>> x, y = map(sum, zip((x, y), (1, 8)))
Run Code Online (Sandbox Code Playgroud)

python

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