Chrome免安装插件截图方法

来源:foofish   |   更新时间: 9月前   |   分类: qa


打开开发者调试工具,Mac上按快捷键Cmd + Shift + P,Windows 使用快捷键Ctrl + Shift + P,然后输入关键字screenshot即可进行区域截图、整屏截图、节点截图。

有问题可以扫描二维码和我交流

关注公众号「Python之禅」,回复「1024」免费获取Python资源

查看原文

functools.cached_property(Python 3.8)

来源:dongwm   |   更新时间: 9月前   |   分类: python3


缓存属性 (cached_property) 是一个非常常用的功能,很多知名 Python 项目都自己实现过它。我举几个例子:

Bottle 是我最早接触的 Web 框架,也是我第一次阅读的开源项目源码。最早知道cached_property就是通过这个项目,如果你是一个 Web 开发,我不建议你用这个框架,但是源码量少,值得一读~

Werkzeug 是 Flask 的依赖,是应用cached_property最成功的一个项目。代码见延伸阅读链接 2

查看原文

Django Model 多个外键来源于同一个表该如何表示

来源:foofish   |   更新时间: 9月前   |   分类: qa


用related_name属性区分名字就可以了。在表中对应的字段就是 sample1_id, sample2_id

classSample(models.model):...classMymodel(models.model):example1=models.ForeignKey(Sample,related_name='sample1')example2=models.ForeignKey(Sample,related_name='sample2')

class Sample(models.model):
    ...

class Mymodel(models.model):
    example1 = models.ForeignKey(Sample, related_name='sample1')
    example2 = models.ForeignKey(Sample, related_name='sample2')
查看原文

SQLAlchemy 查询指定的列字段

来源:foofish   |   更新时间: 9月前   |   分类: qa


如果是SQLAlchemy,可以使用:

session.query(Article.read_num).all()# 或者session.query.with_entities(Article.read_num).all()

session.query(Article.read_num).all()
# 或者
session.query.with_entities(Article.read_num).all()
查看原文

SQLAlchemy 查询最大值和最大的记录

来源:foofish   |   更新时间: 9月前   |   分类: qa


查询最大值和最大值的那条记录方法完全不同,最大值可以使用函数max,而最大记录需要先根据该字段排序(倒序),然后取第一条就是最大的记录

查最大值可以`func.max:

fromsqlalchemy.sqlimportfuncsession.query(func.max(Article.read_num).scalar()

from sqlalchemy.sql import func
session.query(func.max(Article.read_num).scalar()
查看原文

SQLAlchemy Model 有多个来源于同一个表中的外键如何表示

来源:foofish   |   更新时间: 9月前   |   分类: qa


用related_name 属性制定名字就可以了。对应在表中的字段就是 sample1_id, sample2_id

classCompany(Base):__tablename__='company'id=Column(Integer,primary_key=True)name=Column(String(50),nullable=False)classEmployee(Base):__tablename__='employee'id=Column(Integer,primary_key=True)company_id=Column(Integer,ForeignKey('company.id'),nullable=False)stakeholder_id=Column(Integer,ForeignKey('company.id'),nullable=False)company=relationship("Company",foreign_keys=[company_id])stakeholder=relationship("Company",foreign_keys=[stakeholder_id])

class Company(Base):
    __tablename__ = 'company'
    id = Column(Integer, primary_key=True)
    name = Column(String(50), nullable=False)

class Employee(Base):
    __tablename__ = 'employee'
    id = Column(Integer, primary_key=True)
    company_id = Column(Integer, ForeignKey('company.id'), nullable=False)
    stakeholder_id = Column(Integer, ForeignKey('company.id'), nullable=False)
    company = relationship("Company", foreign_keys=[company_id])
    stakeholder = relationship("Company", foreign_keys=[stakeholder_id])
查看原文

Python 工匠:做一个精通规则的玩家

来源:piglei   |   更新时间: 9月前   |   分类: 


这是 “Python 工匠”系列的第 10 篇文章。[查看系列所有文章]

编程,其实和玩电子游戏有一些相似之处。你在玩不同游戏前,需要先学习每个游戏的不同规则,只有熟悉和灵活运用游戏规则,才更有可能在游戏中获胜。

而编程也是一样,不同编程语言同样有着不一样的“规则”。大到是否支持面向对象,小到是否可以定义常量,编程语言的规则比绝大多数电子游戏要复杂的多。

当我们编程时,如果直接拿一种语言的经验套用到另外一种语言上,很多时候并不能取得最佳结果。这就好像一个 CS(反恐精英) 高手在不了解规则的情况下去玩 PUBG(绝地求生),虽然他的枪法可能万中无一,但是极有可能在发现第一个敌人前,他就会倒在某个窝在草丛里的敌人的伏击下。

查看原文

Kernel space, user space, and syscall

来源:卡瓦邦噶   |   更新时间: 9月前   |   分类: 程序开发笔记


这篇文章介绍什么是 kernel space 和 user space,以及系统调用(System call,以下会用 syscall表示)。

为什么要分成 kernel space 和 user space 呢?

这要对系统对进程的抽象说起,每一个进程看到的内存空间都从固定的位置开始,main()总是从0x4005db开始,stack 也总是从特定的位置开始。那么不同进程使用的内存都是重叠的吗?

查看原文

asyncio REPL(Python 3.8)

来源:dongwm   |   更新时间: 9月前   |   分类: python3


我最近都在写一些 Python 3.8 的新功能介绍的文章,在自己的项目中也在提前体验新的 Python 版本。为什么我对这个 Python 3.8 这么有兴趣呢?主要是因为在 Python 2 停止官方维护的 2020 年来临之前,Python 3.8 是最后一个大版本,虽然还没有公布 Python 3.9 的发布时间表,但是按过去的经验,我觉得至少等 Python 3.8.4 发布之后才可能发布 Python 3.9.0,那会应该已经在 2020 年年末了。所以大家最近 2 年的话题都会是 Python 3.8。本周五 (2019-05-31) 将发布 3.8.0 beta 1,这几天开发者们都在抓紧时间合并代码赶上 Python 3.8 最后一班车。这几天我将陆续分享几个新合并的特性。今天先说asyncio REPL

查看原文

深入理解asyncio(二)

来源:dongwm   |   更新时间: 9月前   |   分类: python3


在上篇文章已经看到多次用asyncio.gather了,还有另外一个用法是asyncio.wait,他们都可以让多个协程并发执行。那为什么提供 2 个方法呢?他们有什么区别,适用场景是怎么样的呢?其实我之前也是有点困惑,直到我读了 asyncio 的源码。我们先看 2 个协程的例子:

async def a():
    print('Suspending a')
    await asyncio.sleep(3)
    print('Resuming a')
    return 'A'


async def b():
    print('Suspending b')
    await asyncio.sleep(1)
    print('Resuming b')
    return 'B'
查看原文

数据库方言(dialect)是什么?

来源:foofish   |   更新时间: 9月前   |   分类: qa


抛开数据库,生活中的方言是什么?方言就是某个地方的特色语言,是一种区别于其它地方的语言,只有你们这一小块地方能听懂,出了这个地方又是另一种方言。

数据库方言也是如此,MySQL 是一种方言,Oracle 也是一种方言,MSSQL 也是一种方言,他们之间在遵循 SQL 规范的前提下,都有各自的扩展特性。

拿分页来说,MySQL 的分页是用关键字limit, 而 Oracle 用的是ROWNUM,MSSQL 可能又是另一种分页方式。

查看原文

Python读取包里面的数据文件的三种方法

来源:kingname   |   更新时间: 9月前   |   分类: Python


我们知道,写Python代码的时候,如果一个包(package)里面的一个模块要导入另一个模块,那么我们可以使用相对导入:

假设当前代码结构如下图所示:

其中test_1是一个包,在util.py里面想导入同一个包里面的read.py中的read函数,那么代码可以写为:

from .read import read
def util():
read()
查看原文

macOS服务管理brew services用法

来源:ansheng   |   更新时间: 9月前   |   分类: 


macOS中的brew services类似于CentOS 7下的systemctl,主要是用来管理服务的一些操作。

下面的操作以nginx为例

安装

$ brew install nginx
查看原文

你是怎么学习 Python 的 | 知乎高赞回答

来源:the5fire   |   更新时间: 9月前   |   分类: Python


这个回答是我在知乎认真回答的问题中,点赞和收藏最高的,所以题目高赞是对我来说的(捂脸

------- 以下是正文 -------

我在换第二份 Python 工作时也被 HR 问过类似的问题:你花了多少时间学习 Python,然后开始能正式工作的。 回答是:一两天。

需要介绍下背景:

在我开始写 Python 之前,其实已经在用其他的语言开发项目了,Java、.Net、VB 6.0。

查看原文

Django 数据模型 ForeignKey 的 on_delete 属性的可选值

来源:foofish   |   更新时间: 9月前   |   分类: qa


订单Order 与 用户 User 是多对一的关系,Order 表中有User外键 user_id,当你删除一条user数据的时候,与之关联的订单Order记录会受影响,具体根据on_delete的值来决定。

classOrder(BaseModel):user=models.ForeignKey(User,on_delete=models.CASCADE)

class Order(BaseModel):
    user= models.ForeignKey(User, on_delete=models.CASCADE)
查看原文

深入理解asyncio(一)

来源:dongwm   |   更新时间: 9月前   |   分类: python3


这几天看 asyncio 相关的 pycon 视频又重温了 asyncio 的官方文档,收获很多。之前 asyncio 被吐槽的一点就是文档写的不好,Python 3.7 时 asyncio 的官方文档被 Andrew Svetlov 以及 Yury Selivanov 等核心开发者重写了,新的版本我觉得已经好很多了。在这里记录一下我对 asyncio 的一些理解。

asyncio 里面主要有 4 个需要关注的基本概念

查看原文

操作数据库的命令行神器:mycli

来源:foofish   |   更新时间: 9月前   |   分类: Python技术


GitHub 可谓各种神器都有,今天发现一个操作数据库的命令行工具,可以自动补全和语法高亮,以前在终端敲 SQL 的时候,你不仅要记住表名、字段名,各种函数都需要记住才能敲出一条完整的语句来,否则就是先 Google 百度查文档。

而有了mycli 这个命令行辅助工具之后,省心不少。可以先看下效果图:

如果自己不去尝试,可能感受没那么强烈,所以不如自己尝试一下。 正常情况下直接用 pip 命令就可以安装

查看原文

Flask如何在view中读取config中的配置信息

来源:foofish   |   更新时间: 9月前   |   分类: qa


fromflaskimportcurrent_appasapp@api.route('/info/',methods=['GET'])defget_account_num():num=app.config["INFO"]

from flask import current_app as app
@api.route('/info/', methods = ['GET'])
def get_account_num():
    num = app.config["INFO"]
查看原文

在Django中集成Celery与Celery-Beat

来源:ansheng   |   更新时间: 9月前   |   分类: 


Celery是一个基于Python开发的分布式任务队列,而Celery-Beat则是一个定时任务,类似于Linux平台下的crontab。

我在macOS下面操作的,使用到软件版本如下:

pyenv 1.2.11
Python 3.7.3
pip 19.1.1
macOS 10.14.5 (18F132)
查看原文

Flask 环境变量 FLASK_ENV 说明

来源:foofish   |   更新时间: 9月前   |   分类: qa


FLASK_ENV

FLASK_ENV用来告诉Flask当前应用所运行的环境,有两个值,分别是 “production” 和 “development”,默认缺省值是“production”。Flask自身和第三方扩展插件可能会基于此变量值改变自己的行为。如果是“development”,Flask 会开启调试模式,代码变更时会自动重启,适合在开发的过程设置。

D:\my>pipenv run flask run * Environment: development * Debug mode: on [2019-05-23 19:06:22,004] INFO in __init__: True * Restarting with stat [2019-05-23 19:06:23,812] INFO in __init__: True * Debugger is active! * Debugger PIN: 288-447-910 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

D:\my>pipenv run flask run
 * Environment: development
 * Debug mode: on
[2019-05-23 19:06:22,004] INFO in __init__: True
 * Restarting with stat
[2019-05-23 19:06:23,812] INFO in __init__: True
 * Debugger is active!
 * Debugger PIN: 288-447-910
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
查看原文

本页内容使用均遵循相关开源协议,部分内容获得作者本人授权