flask_sqlalchemy: 重写查询方法例子(重写filter_by)

  1. 引出

比如某个项目中, status是逻辑删除的标志, 每次查询都需要加上status=1,

Gifts.query.filter_by(uid=current_user.id, isbn=isbn, launched=False, status=1)

非常的不方便, 重写filter_by是一个不错的选择

  1. 重写

filter_by等查询函数定义在sqlalchemy.orm.Query中, flask_sqlalchemy.BaseQuery继承了orm的Query, 因此我们重写的时候可是直接继承BaseQuery.

自定义filter_by的代码为:

class Query(BaseQuery):
    def filter_by(self, **kwargs):
        if 'status' not in kwargs.keys():
            kwargs['status'] = 1
        return super(Query, self).filter_by(**kwargs)

  1. 指定query类

但是这时候, 系统并不知道要使用我们重写的filter_by.
SQLAlchemy类的构造函数中为我们提供了可指定的query_class参数:

def __init__(self, app=None, use_native_unicode=True, session_options=None,
                 metadata=None, query_class=BaseQuery, model_class=Model):
    ...

因此可以在实例化SQLALchemy对象时候直接使用参数:


db = SQLALchemy(query_class=Query)

linux 连接共享windows服务器和shadowsoscksr客户端linux使用配置

linux连接共享windows服务器

1.

sudo apt-get install cifs-utils

2.查看共享目录:

smbclient -L 10.31.162.41 -N

3.挂载

mount -t cifs //10.31.162.41/共享文件夹  /home/user1/tool/share

4.解除挂载

sudo umount /挂载的目录

shadowsoacksr

  • 原文:
    https://cndaqiang.github.io/2017/09/28/ubuntu1604-ssr/
配置完成后的常用命令:
  1. 启动:
sudo python ./shadowsocks/local.py -c config.json -d start
  1. config.json的配置示例
{
    "server": "38.141.44.98",
    "local_address": "127.0.0.1", 
    "local_port": "1080",
    "server_port": "512",
    "password":  "ntdtv.com",
    "method": "aes-256-cfb",
    "protocol":"auth_sha1_v4",
    "obfs": "plain"
}

** 以下复制原文:

环境
Ubuntu 16.04 LTS (GNU/Linux 2.6.32-042stab116.2 x86_64)

Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-62-generic x86_64)

python版本 python 2.7

操作
安装python
$ sudo apt-get update
$ sudo apt-get install python
下载ssr
$ mkdir shadowsocksr
$ cd shadowsocksr/
$ wget https://github.com/cndaqiang/shadowsocksr/archive/manyuser.zip
配置ssr
$ sudo apt-get install unzip
$ unzip manyuser.zip
cd shadowsocksr-manyuser/
配置文件shadowsocksr-manyuser/config.json

配置文件内容解释可参考SSR配置config.json配置文件各项说明

主要参数和示例

“server_port”:8388, //端口
“password”:”password”, //密码
“protocol”:”origin”, //协议插件
“obfs”:”http_simple”, //混淆插件
“method”:”aes-256-cfb”, //加密方式
配置示例
多用户,不同用户不同端口 修改 vi config.json 删除以下内容

"server_port": 8388,
"password": "m",

添加,不同端口和密码

“port_password”:{
“端口1″:”密码1”,
“端口2″:”密码2”
},
其他参数可自定义

“protocol”:”origin”, //协议插件
“obfs”:”http_simple”, //混淆插件
“method”:”aes-256-cfb”, //加密方式
启动服务
$ python ./shadowsocks/server.py -c config.json
会显示连接等信息 其他启动方式

sudo python ./shadowsocks/server.py -c config.json -d start
停止

sudo python ./shadowsocks/server.py -c config.json -d stop
帮助

python ./shadowsocks/server.py -h
客户端
IOS: Potatso Lite(支持的参数更多)
Wingy 其他平台自行搜索

linux端
与服务器端使用相同软件

$ wget https://github.com/cndaqiang/shadowsocksr/archive/manyuser.zip
过程同服务器安装 config.json修改为

“server”: “服务器密码ipv4地址”,
“server_ipv6”: “::”,

"local_address": "127.0.0.1", 本地地址
"local_port": xxx, 本地socks端口
"server_port": xxx, 服务器端口
"password": "密码", 服务器密码

其他参数同服务器一样就可以
使用方式

sudo python ./shadowsocks/local.py -c config.json -d start|stop
遇到的问题
如果安装防火墙,请允许对应端口通过