bricks
开发指南
2.2 初始化篇
2.2.3 内置引擎

Bricks 内置了几个引擎,供开发者直接使用,内置引擎地址为:bricks.plugins.make_seeds

by_csv

CSV 中获取种子, csv 必须有表头,可以使用 SQL 进行数据查询

  • :param path: 文件路径
  • :param query: 查询 sql, 使用 <TABLE> 关键字来代替当前表名
  • :param batch_size: 一次获取多少条数据
  • :param skip: 跳过初始多少种子
  • :param reader_options: 初始化 csv reader 的其他参数
  • :param record: 历史记录,记录投放状态的容器

示例:

from bricks.plugins import make_seeds  
  
from bricks.spider import form  
  
  
class MySpider(form.Spider):  
  
    @property    
    def config(self) -> form.Config:  
        return form.Config(  
            init=[  
                form.Init(  
                    func=make_seeds.by_csv,  
                    kwargs={  
                        "path": "a.csv",  
                        "query": "select * from <TABLE> where age>18"  
                    }  
                )  
            ],  
        )  
  
  
if __name__ == '__main__':  
    spider = MySpider()  
    spider.run()

by_mongo

Mongo 中加载数据作为种子

  • :param path: 文件路径
  • :param conn: Mongo 连接
  • :param query: 查询 Query, 使用的 Mongo 查询语法,是一个字典
  • :param database: Mongo 的数据库名称
  • :param batch_size: 一次获取多少条数据
  • :param skip: 跳过初始多少种子
  • :param sort: 排序方式
  • :param record: 历史记录,记录投放状态的容器

示例:

from bricks.db.mongo import Mongo  
from bricks.plugins import make_seeds  
from bricks.spider import form  
  
mongo_db = Mongo()  
  
  
class MySpider(form.Spider):  
  
    @property    
    def config(self) -> form.Config:  
        return form.Config(  
            init=[  
                form.Init(  
                    func=make_seeds.by_mongo,  
                    kwargs={  
                        "path": "user_info",  
                        "conn": mongo_db  
                    }  
                )  
            ],  
        )  
  
  
if __name__ == '__main__':  
    spider = MySpider()  
    spider.run()

by_sqlite

Sqlite 中加载数据作为种子

  • :param path: 查询 SQL
  • :param conn: Sqlite 连接
  • :param batch_size: 一次获取多少条数据
  • :param skip: 跳过初始多少种子
  • :param record: 历史记录,记录投放状态的容器

示例:

 
from bricks.db.sqlite import Sqlite  
from bricks.plugins import make_seeds  
from bricks.spider import form  
  
sqlite_conn = Sqlite("local.db")  
  
  
class MySpider(form.Spider):  
  
    @property    
    def config(self) -> form.Config:  
        return form.Config(  
            init=[  
                form.Init(  
                    func=make_seeds.by_sqlite,  
                    kwargs={  
                        "path": "select * from user_info where age>18",  
                        "conn": sqlite_conn  
                    }  
                )  
            ],  
        )  
  
  
if __name__ == '__main__':  
    spider = MySpider()  
    spider.run()
 

by_redis

通过 redis 初始化种子, 仅支持小批量数据, 不支持断点续投

  • :param path: 键值, 当 key_typestring 时, 此参数为筛选条件, 如 *test*
  • :param conn: Redis 实例
  • :param batch_size: 一次获取多少条数据
  • :param key_type: 存储类型

示例:

 
from bricks.db.redis_ import Redis  
from bricks.plugins import make_seeds  
from bricks.spider import form  
  
redis = Redis()  
  
  
class MySpider(form.Spider):  
  
    @property    
    def config(self) -> form.Config:  
        return form.Config(  
            init=[  
                form.Init(  
                    func=make_seeds.by_redis,  
                    kwargs={  
                        "path": "*|*",  
                        "conn": redis,  
                        "key_type": "string",  
                    }  
                )  
            ],  
        )  
  
  
if __name__ == '__main__':  
    spider = MySpider()  
    spider.run()