数据库查询

Document 对象有一个 objects 属性,用来访问在数据库中跟这个类有关的对象。这个 objects 属性其实是一个 QuerySetManager ,它会创建和返回一个新的 QuerySet 对象的访问。这个 QuerySet 对象可以从数据库中遍历获取的文档:

1
2
3
# Prints out the names of all the users in the database
for user in User.objects:
print user.name

过滤查询

可以通过调用 QuerySet 对象的关键字参数来对数据查询进行过滤,关键字查询中的键和你想要查询的 Document 中的字段一致:

1
2
3
# This will return a QuerySet that will only iterate over users whose
# 'country' field is set to 'uk'
uk_users = User.objects(country='uk')

对于内嵌 document 的字段可以使用 __ 来代替对象属性访问语法中的 . 进行访问:

1
2
3
# This will return a QuerySet that will only iterate over pages that have
# been written by a user whose 'country' field is set to 'uk'
uk_pages = Page.objects(author__country='uk')
阅读全文 »

历史记录相关快捷命令

参见:man history。下面节选一部分:

命令 说明
!! 执行上一条命令
!foo 执行以 foo 开头的命令
!?foo 执行包含 foo 的命令
!n 执行第 n 条命令
!-n 执行倒数第 n 条命令
!$ 上一条命令最后一个参数
!^ 上一条命令第一个参数
!:n 上一条命令第 n 个参数
!:x-y 上一条命令从 x 到 y 的参数
!:n* 上一条命令从 n 开始到最后的参数
!* 上一条命令的所有参数
阅读全文 »

安装

参见 oh-my-zsh 官网
首先安装 zsh

1
apt install zsh

下载并安装:

1
$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

或者

1
$ sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

注意:安装完成后,以后对 ~/.bashrc 的配置要放到 ~./zshrc 中进行。

若想卸载,可直接运行 uninstall_oh_my_zsh

配置主题

打开配置文件

1
nano ~./zshrc

修改 ZSH_THEME= 行:

1
ZSH_THEME="ys"

更多主题介绍,参见:Themes

阅读全文 »

本文翻译自:5 different ways to backup your PostgreSQL database using Python

介绍

如果您正在为您的应用程序运行 PostgreSQL 数据库,则可能需要运行备份。

Because good boys run backups. And you’re a good boy 🐶.

现在,从 bash shell 备份 PostgreSQL 数据库非常简单。只需像这样调用 pg_dump:

1
pg_dump -h localhost -U postgres my_database

您还需要压缩备份。 您可以通过压缩转储文件轻松节省大量磁盘空间:

1
pg_dump -h localhost -U postgres my_database | gzip > backup.gz

但是如何使用 Python 进行数据库备份呢?让我向您展示几种可以实现这一目标的方法。

阅读全文 »

环境:Python 3.6.5

1
2
$ python -c "import sys;print(sys.version)"
3.6.5 (default, Apr 1 2018, 05:46:30)

Python 内建函数 type,一般用判断变量类型,其实它还有一个比较魔术的用法,我们首先看一下它的 docstring

1
2
3
4
>>> print(type.__doc__)
type(object_or_name, bases, dict)
type(object) -> the object's type
type(name, bases, dict) -> a new type

下面我们探讨下怎样用 type() 构造一个新类。

阅读全文 »

安装

创建 pgdg.list 编辑配置文件:

/etc/apt/sources.list.d/pgdg.list

添加如下内容:

1
deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main

导入存储库签名密钥,并更新包列表:

1
2
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update

安装:

1
apt-get install postgresql-10

参见:LINUX DOWNLOADS (UBUNTU)

阅读全文 »

环境:Ubuntu 18.04

Python

参见:

PostgreSQL

创建 pgdg.list 编辑配置文件:

/etc/apt/sources.list.d/pgdg.list

添加如下内容:

1
deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main

导入存储库签名密钥,并更新包列表:

1
2
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update

安装:

1
apt-get install postgresql-10

参见:LINUX DOWNLOADS (UBUNTU)

Nginx

不用其他复杂配置,直接运行,即可安装最新稳定版:

1
sudo apt install nginx

通常 Python 用户使用非系统 Python 发行版,如 Miniconda。这些 Python 发行版通常允许在 Python 版本之间轻松切换。但是,在必须使用系统 Python 的情况下,可以使用 update-alternatives 持久切换默认的 Python 版本。具体步骤如下:

不用 sudo

新建路径:

1
mkdir ~/.local/bin

编辑 .bashrc

1
export PATH="$HOME/.local/bin:$PATH"

设置:

1
2
3
update-alternatives --install $HOME/.local/bin/python python /usr/bin/python3 20

update-alternatives --install $HOME/.local/bin/python python /usr/bin/python2 10
阅读全文 »

为什么引入 async/await

关于 async/await 最初的提案,参见:PEP492 以及它的中文翻译

具体细节我们先不做了解,先看一下增加 async/await 解决了什么问题(引自翻译):

在以前,我们可以用生成器实现协程(PEP 342),后来又对其进行了改进,引入了 yield from 语法(PEP 380)。但仍有一些缺点:

  • 协程和普通生成器使用相同的语法,所以很容易把它们搞混,初学者更是如此。
  • 一个函数是否是一个协程,取决于它里面是否出现了 yieldyield from 语句。这并不明显,容易在重构函数的时候搞乱,导致出错。
  • 异步调用被 yield 语法限制了,我们不能获得、使用更多的语法特性,比如 withfor

PEP492 把协程从生成器独立出来,成为 Python 的一个原生事物。这会消除协程和生成器之间的混淆,方便编写不依赖特定库的协程代码。也为 linter 和 IDE 进行代码静态分析提供了机会。

使用原生协程和相应的新语法,我们可以在异步编程时使用上下文管理器(context manager)和迭代器。如下文所示,新的 async with 语句可以在进入、离开运行上下文(runtime context)时进行异步调用,而 async for 语句可以在迭代时进行异步调用。

综上,虽然在 CPython 的内部实现,用 def async 定义的协程仍然是一个生成器,但是已经被封装好了,我们不用关心其晦涩的细节。添加 async/await 后我们编写异步协程程序会更加的容易、直观。同时增加异步迭代器 async for 和异步上下文管理器 async with,我们在编写异步程序将更加的方便。

阅读全文 »
0%