mirror of
				https://github.com/Infinidat/infi.clickhouse_orm.git
				synced 2025-11-01 00:07:37 +03:00 
			
		
		
		
	Generate a class reference document
This commit is contained in:
		
							parent
							
								
									b3437dae7e
								
							
						
					
					
						commit
						00ca503b7c
					
				
							
								
								
									
										594
									
								
								docs/class_reference.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										594
									
								
								docs/class_reference.md
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,594 @@ | ||||||
|  | Class Reference | ||||||
|  | =============== | ||||||
|  | 
 | ||||||
|  | infi.clickhouse_orm.database | ||||||
|  | ---------------------------- | ||||||
|  | 
 | ||||||
|  | ### Database | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Database instances connect to a specific ClickHouse database for running queries,  | ||||||
|  | inserting data and other operations. | ||||||
|  | 
 | ||||||
|  | #### Database(db_name, db_url="http://localhost:8123/", username=None, password=None, readonly=False) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Initializes a database instance. Unless it's readonly, the database will be | ||||||
|  | created on the ClickHouse server if it does not already exist. | ||||||
|  | 
 | ||||||
|  | - `db_name`: name of the database to connect to. | ||||||
|  | - `db_url`: URL of the ClickHouse server. | ||||||
|  | - `username`: optional connection credentials. | ||||||
|  | - `password`: optional connection credentials. | ||||||
|  | - `readonly`: use a read-only connection. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### count(model_class, conditions=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Counts the number of records in the model's table. | ||||||
|  | 
 | ||||||
|  | - `model_class`: the model to count. | ||||||
|  | - `conditions`: optional SQL conditions (contents of the WHERE clause). | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### create_database() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Creates the database on the ClickHouse server if it does not already exist. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### create_table(model_class) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Creates a table for the given model class, if it does not exist already. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### drop_database() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Deletes the database on the ClickHouse server. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### drop_table(model_class) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Drops the database table of the given model class, if it exists. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### insert(model_instances, batch_size=1000) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Insert records into the database. | ||||||
|  | 
 | ||||||
|  | - `model_instances`: any iterable containing instances of a single model class. | ||||||
|  | - `batch_size`: number of records to send per chunk (use a lower number if your records are very large). | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### migrate(migrations_package_name, up_to=9999) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Executes schema migrations. | ||||||
|  | 
 | ||||||
|  | - `migrations_package_name` - fully qualified name of the Python package  | ||||||
|  |   containing the migrations. | ||||||
|  | - `up_to` - number of the last migration to apply. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### paginate(model_class, order_by, page_num=1, page_size=100, conditions=None, settings=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Selects records and returns a single page of model instances. | ||||||
|  | 
 | ||||||
|  | - `model_class`: the model class matching the query's table, | ||||||
|  |   or `None` for getting back instances of an ad-hoc model. | ||||||
|  | - `order_by`: columns to use for sorting the query (contents of the ORDER BY clause). | ||||||
|  | - `page_num`: the page number (1-based), or -1 to get the last page. | ||||||
|  | - `page_size`: number of records to return per page. | ||||||
|  | - `conditions`: optional SQL conditions (contents of the WHERE clause). | ||||||
|  | - `settings`: query settings to send as HTTP GET parameters | ||||||
|  | 
 | ||||||
|  | The result is a namedtuple containing `objects` (list), `number_of_objects`,  | ||||||
|  | `pages_total`, `number` (of the current page), and `page_size`. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### raw(query, settings=None, stream=False) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Performs a query and returns its output as text. | ||||||
|  | 
 | ||||||
|  | - `query`: the SQL query to execute. | ||||||
|  | - `settings`: query settings to send as HTTP GET parameters | ||||||
|  | - `stream`: if true, the HTTP response from ClickHouse will be streamed. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### select(query, model_class=None, settings=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Performs a query and returns a generator of model instances. | ||||||
|  | 
 | ||||||
|  | - `query`: the SQL query to execute. | ||||||
|  | - `model_class`: the model class matching the query's table, | ||||||
|  |   or `None` for getting back instances of an ad-hoc model. | ||||||
|  | - `settings`: query settings to send as HTTP GET parameters | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### DatabaseException | ||||||
|  | 
 | ||||||
|  | Extends Exception | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Raised when a database operation fails. | ||||||
|  | 
 | ||||||
|  | infi.clickhouse_orm.models | ||||||
|  | -------------------------- | ||||||
|  | 
 | ||||||
|  | ### Model | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A base class for ORM models. Each model class represent a ClickHouse table. For example: | ||||||
|  |      | ||||||
|  |     class CPUStats(Model): | ||||||
|  |         timestamp = DateTimeField() | ||||||
|  |         cpu_id = UInt16Field() | ||||||
|  |         cpu_percent = Float32Field() | ||||||
|  |         engine = Memory() | ||||||
|  | 
 | ||||||
|  | #### Model(**kwargs) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Creates a model instance, using keyword arguments as field values. | ||||||
|  | Since values are immediately converted to their Pythonic type, | ||||||
|  | invalid values will cause a `ValueError` to be raised. | ||||||
|  | Unrecognized field names will cause an `AttributeError`. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### Model.create_table_sql(db_name) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the SQL command for creating a table for this model. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### Model.drop_table_sql(db_name) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the SQL command for deleting this model's table. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### Model.from_tsv(line, field_names=None, timezone_in_use=UTC, database=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Create a model instance from a tab-separated line. The line may or may not include a newline. | ||||||
|  | The `field_names` list must match the fields defined in the model, but does not have to include all of them. | ||||||
|  | If omitted, it is assumed to be the names of all fields in the model, in order of definition. | ||||||
|  | 
 | ||||||
|  | - `line`: the TSV-formatted data. | ||||||
|  | - `field_names`: names of the model fields in the data. | ||||||
|  | - `timezone_in_use`: the timezone to use when parsing dates and datetimes. | ||||||
|  | - `database`: if given, sets the database that this instance belongs to. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### get_database() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Gets the `Database` that this model instance belongs to.  | ||||||
|  | Returns `None` unless the instance was read from the database or written to it. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### get_field(name) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Gets a `Field` instance given its name, or `None` if not found. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### Model.objects_in(database) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns a `QuerySet` for selecting instances of this model class. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### set_database(db) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Sets the `Database` that this model instance belongs to.  | ||||||
|  | This is done automatically when the instance is read from the database or written to it. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### Model.table_name() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the model's database table name. By default this is the | ||||||
|  | class name converted to lowercase. Override this if you want to use | ||||||
|  | a different table name. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### to_dict(include_readonly=True, field_names=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the instance's column values as a dict. | ||||||
|  | 
 | ||||||
|  | - `include_readonly`: if false, returns only fields that can be inserted into database. | ||||||
|  | - `field_names`: an iterable of field names to return (optional) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### to_tsv(include_readonly=True) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the instance's column values as a tab-separated line. A newline is not included. | ||||||
|  | 
 | ||||||
|  | - `include_readonly`: if false, returns only fields that can be inserted into database. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### BufferModel | ||||||
|  | 
 | ||||||
|  | Extends Model | ||||||
|  | 
 | ||||||
|  | #### BufferModel(**kwargs) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Creates a model instance, using keyword arguments as field values. | ||||||
|  | Since values are immediately converted to their Pythonic type, | ||||||
|  | invalid values will cause a `ValueError` to be raised. | ||||||
|  | Unrecognized field names will cause an `AttributeError`. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### BufferModel.create_table_sql(db_name) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the SQL command for creating a table for this model. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### BufferModel.drop_table_sql(db_name) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the SQL command for deleting this model's table. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### BufferModel.from_tsv(line, field_names=None, timezone_in_use=UTC, database=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Create a model instance from a tab-separated line. The line may or may not include a newline. | ||||||
|  | The `field_names` list must match the fields defined in the model, but does not have to include all of them. | ||||||
|  | If omitted, it is assumed to be the names of all fields in the model, in order of definition. | ||||||
|  | 
 | ||||||
|  | - `line`: the TSV-formatted data. | ||||||
|  | - `field_names`: names of the model fields in the data. | ||||||
|  | - `timezone_in_use`: the timezone to use when parsing dates and datetimes. | ||||||
|  | - `database`: if given, sets the database that this instance belongs to. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### get_database() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Gets the `Database` that this model instance belongs to.  | ||||||
|  | Returns `None` unless the instance was read from the database or written to it. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### get_field(name) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Gets a `Field` instance given its name, or `None` if not found. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### BufferModel.objects_in(database) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns a `QuerySet` for selecting instances of this model class. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### set_database(db) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Sets the `Database` that this model instance belongs to.  | ||||||
|  | This is done automatically when the instance is read from the database or written to it. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### BufferModel.table_name() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the model's database table name. By default this is the | ||||||
|  | class name converted to lowercase. Override this if you want to use | ||||||
|  | a different table name. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### to_dict(include_readonly=True, field_names=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the instance's column values as a dict. | ||||||
|  | 
 | ||||||
|  | - `include_readonly`: if false, returns only fields that can be inserted into database. | ||||||
|  | - `field_names`: an iterable of field names to return (optional) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### to_tsv(include_readonly=True) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the instance's column values as a tab-separated line. A newline is not included. | ||||||
|  | 
 | ||||||
|  | - `include_readonly`: if false, returns only fields that can be inserted into database. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | infi.clickhouse_orm.fields | ||||||
|  | -------------------------- | ||||||
|  | 
 | ||||||
|  | ### Field | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Abstract base class for all field types. | ||||||
|  | 
 | ||||||
|  | #### Field(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### StringField | ||||||
|  | 
 | ||||||
|  | Extends Field | ||||||
|  | 
 | ||||||
|  | #### StringField(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### DateField | ||||||
|  | 
 | ||||||
|  | Extends Field | ||||||
|  | 
 | ||||||
|  | #### DateField(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### DateTimeField | ||||||
|  | 
 | ||||||
|  | Extends Field | ||||||
|  | 
 | ||||||
|  | #### DateTimeField(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### BaseIntField | ||||||
|  | 
 | ||||||
|  | Extends Field | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Abstract base class for all integer-type fields. | ||||||
|  | 
 | ||||||
|  | #### BaseIntField(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### BaseFloatField | ||||||
|  | 
 | ||||||
|  | Extends Field | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Abstract base class for all float-type fields. | ||||||
|  | 
 | ||||||
|  | #### BaseFloatField(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### BaseEnumField | ||||||
|  | 
 | ||||||
|  | Extends Field | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Abstract base class for all enum-type fields. | ||||||
|  | 
 | ||||||
|  | #### BaseEnumField(enum_cls, default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### ArrayField | ||||||
|  | 
 | ||||||
|  | Extends Field | ||||||
|  | 
 | ||||||
|  | #### ArrayField(inner_field, default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### FixedStringField | ||||||
|  | 
 | ||||||
|  | Extends StringField | ||||||
|  | 
 | ||||||
|  | #### FixedStringField(length, default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### UInt8Field | ||||||
|  | 
 | ||||||
|  | Extends BaseIntField | ||||||
|  | 
 | ||||||
|  | #### UInt8Field(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### UInt16Field | ||||||
|  | 
 | ||||||
|  | Extends BaseIntField | ||||||
|  | 
 | ||||||
|  | #### UInt16Field(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### UInt32Field | ||||||
|  | 
 | ||||||
|  | Extends BaseIntField | ||||||
|  | 
 | ||||||
|  | #### UInt32Field(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### UInt64Field | ||||||
|  | 
 | ||||||
|  | Extends BaseIntField | ||||||
|  | 
 | ||||||
|  | #### UInt64Field(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### Int8Field | ||||||
|  | 
 | ||||||
|  | Extends BaseIntField | ||||||
|  | 
 | ||||||
|  | #### Int8Field(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### Int16Field | ||||||
|  | 
 | ||||||
|  | Extends BaseIntField | ||||||
|  | 
 | ||||||
|  | #### Int16Field(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### Int32Field | ||||||
|  | 
 | ||||||
|  | Extends BaseIntField | ||||||
|  | 
 | ||||||
|  | #### Int32Field(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### Int64Field | ||||||
|  | 
 | ||||||
|  | Extends BaseIntField | ||||||
|  | 
 | ||||||
|  | #### Int64Field(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### Float32Field | ||||||
|  | 
 | ||||||
|  | Extends BaseFloatField | ||||||
|  | 
 | ||||||
|  | #### Float32Field(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### Float64Field | ||||||
|  | 
 | ||||||
|  | Extends BaseFloatField | ||||||
|  | 
 | ||||||
|  | #### Float64Field(default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### Enum8Field | ||||||
|  | 
 | ||||||
|  | Extends BaseEnumField | ||||||
|  | 
 | ||||||
|  | #### Enum8Field(enum_cls, default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### Enum16Field | ||||||
|  | 
 | ||||||
|  | Extends BaseEnumField | ||||||
|  | 
 | ||||||
|  | #### Enum16Field(enum_cls, default=None, alias=None, materialized=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | infi.clickhouse_orm.engines | ||||||
|  | --------------------------- | ||||||
|  | 
 | ||||||
|  | ### Engine | ||||||
|  | 
 | ||||||
|  | ### TinyLog | ||||||
|  | 
 | ||||||
|  | Extends Engine | ||||||
|  | 
 | ||||||
|  | ### Log | ||||||
|  | 
 | ||||||
|  | Extends Engine | ||||||
|  | 
 | ||||||
|  | ### Memory | ||||||
|  | 
 | ||||||
|  | Extends Engine | ||||||
|  | 
 | ||||||
|  | ### MergeTree | ||||||
|  | 
 | ||||||
|  | Extends Engine | ||||||
|  | 
 | ||||||
|  | #### MergeTree(date_col, key_cols, sampling_expr=None, index_granularity=8192, replica_table_path=None, replica_name=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### Buffer | ||||||
|  | 
 | ||||||
|  | Extends Engine | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Buffers the data to write in RAM, periodically flushing it to another table. | ||||||
|  | Must be used in conjuction with a `BufferModel`. | ||||||
|  | Read more [here](https://clickhouse.yandex/reference_en.html#Buffer). | ||||||
|  | 
 | ||||||
|  | #### Buffer(main_model, num_layers=16, min_time=10, max_time=100, min_rows=10000, max_rows=1000000, min_bytes=10000000, max_bytes=100000000) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### CollapsingMergeTree | ||||||
|  | 
 | ||||||
|  | Extends MergeTree | ||||||
|  | 
 | ||||||
|  | #### CollapsingMergeTree(date_col, key_cols, sign_col, sampling_expr=None, index_granularity=8192, replica_table_path=None, replica_name=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### SummingMergeTree | ||||||
|  | 
 | ||||||
|  | Extends MergeTree | ||||||
|  | 
 | ||||||
|  | #### SummingMergeTree(date_col, key_cols, summing_cols=None, sampling_expr=None, index_granularity=8192, replica_table_path=None, replica_name=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### ReplacingMergeTree | ||||||
|  | 
 | ||||||
|  | Extends MergeTree | ||||||
|  | 
 | ||||||
|  | #### ReplacingMergeTree(date_col, key_cols, ver_col=None, sampling_expr=None, index_granularity=8192, replica_table_path=None, replica_name=None) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | infi.clickhouse_orm.query | ||||||
|  | ------------------------- | ||||||
|  | 
 | ||||||
|  | ### QuerySet | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A queryset is an object that represents a database query using a specific `Model`.  | ||||||
|  | It is lazy, meaning that it does not hit the database until you iterate over its  | ||||||
|  | matching rows (model instances). | ||||||
|  | 
 | ||||||
|  | #### QuerySet(model_cls, database) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Initializer. It is possible to create a queryset like this, but the standard | ||||||
|  | way is to use `MyModel.objects_in(database)`. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### as_sql() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the whole query as a SQL string. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### conditions_as_sql() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the contents of the query's `WHERE` clause as a string. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### count() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the number of matching model instances. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### exclude(**kwargs) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns a new `QuerySet` instance that excludes all rows matching the conditions. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### filter(**kwargs) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns a new `QuerySet` instance that includes only rows matching the conditions. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### only(*field_names) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns a new `QuerySet` instance limited to the specified field names. | ||||||
|  | Useful when there are large fields that are not needed, | ||||||
|  | or for creating a subquery to use with an IN operator. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### order_by(*field_names) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns a new `QuerySet` instance with the ordering changed. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #### order_by_as_sql() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the contents of the query's `ORDER BY` clause as a string. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
							
								
								
									
										82
									
								
								docs/toc.md
									
									
									
									
									
								
							
							
						
						
									
										82
									
								
								docs/toc.md
									
									
									
									
									
								
							|  | @ -42,45 +42,45 @@ | ||||||
| 
 | 
 | ||||||
|    * [Contributing](contributing.md#contributing) |    * [Contributing](contributing.md#contributing) | ||||||
| 
 | 
 | ||||||
|    * [Class Reference](ref.md#class-reference) |    * [Class Reference](class_reference.md#class-reference) | ||||||
|       * [infi.clickhouse_orm.database](ref.md#infi.clickhouse_orm.database) |       * [infi.clickhouse_orm.database](class_reference.md#infi.clickhouse_orm.database) | ||||||
|          * [Database](ref.md#database) |          * [Database](class_reference.md#database) | ||||||
|          * [DatabaseException](ref.md#databaseexception) |          * [DatabaseException](class_reference.md#databaseexception) | ||||||
|       * [infi.clickhouse_orm.models](ref.md#infi.clickhouse_orm.models) |       * [infi.clickhouse_orm.models](class_reference.md#infi.clickhouse_orm.models) | ||||||
|          * [Model](ref.md#model) |          * [Model](class_reference.md#model) | ||||||
|          * [BufferModel](ref.md#buffermodel) |          * [BufferModel](class_reference.md#buffermodel) | ||||||
|       * [infi.clickhouse_orm.fields](ref.md#infi.clickhouse_orm.fields) |       * [infi.clickhouse_orm.fields](class_reference.md#infi.clickhouse_orm.fields) | ||||||
|          * [Field](ref.md#field) |          * [Field](class_reference.md#field) | ||||||
|          * [StringField](ref.md#stringfield) |          * [StringField](class_reference.md#stringfield) | ||||||
|          * [DateField](ref.md#datefield) |          * [DateField](class_reference.md#datefield) | ||||||
|          * [DateTimeField](ref.md#datetimefield) |          * [DateTimeField](class_reference.md#datetimefield) | ||||||
|          * [BaseIntField](ref.md#baseintfield) |          * [BaseIntField](class_reference.md#baseintfield) | ||||||
|          * [BaseFloatField](ref.md#basefloatfield) |          * [BaseFloatField](class_reference.md#basefloatfield) | ||||||
|          * [BaseEnumField](ref.md#baseenumfield) |          * [BaseEnumField](class_reference.md#baseenumfield) | ||||||
|          * [ArrayField](ref.md#arrayfield) |          * [ArrayField](class_reference.md#arrayfield) | ||||||
|          * [FixedStringField](ref.md#fixedstringfield) |          * [FixedStringField](class_reference.md#fixedstringfield) | ||||||
|          * [UInt8Field](ref.md#uint8field) |          * [UInt8Field](class_reference.md#uint8field) | ||||||
|          * [UInt16Field](ref.md#uint16field) |          * [UInt16Field](class_reference.md#uint16field) | ||||||
|          * [UInt32Field](ref.md#uint32field) |          * [UInt32Field](class_reference.md#uint32field) | ||||||
|          * [UInt64Field](ref.md#uint64field) |          * [UInt64Field](class_reference.md#uint64field) | ||||||
|          * [Int8Field](ref.md#int8field) |          * [Int8Field](class_reference.md#int8field) | ||||||
|          * [Int16Field](ref.md#int16field) |          * [Int16Field](class_reference.md#int16field) | ||||||
|          * [Int32Field](ref.md#int32field) |          * [Int32Field](class_reference.md#int32field) | ||||||
|          * [Int64Field](ref.md#int64field) |          * [Int64Field](class_reference.md#int64field) | ||||||
|          * [Float32Field](ref.md#float32field) |          * [Float32Field](class_reference.md#float32field) | ||||||
|          * [Float64Field](ref.md#float64field) |          * [Float64Field](class_reference.md#float64field) | ||||||
|          * [Enum8Field](ref.md#enum8field) |          * [Enum8Field](class_reference.md#enum8field) | ||||||
|          * [Enum16Field](ref.md#enum16field) |          * [Enum16Field](class_reference.md#enum16field) | ||||||
|       * [infi.clickhouse_orm.engines](ref.md#infi.clickhouse_orm.engines) |       * [infi.clickhouse_orm.engines](class_reference.md#infi.clickhouse_orm.engines) | ||||||
|          * [Engine](ref.md#engine) |          * [Engine](class_reference.md#engine) | ||||||
|          * [TinyLog](ref.md#tinylog) |          * [TinyLog](class_reference.md#tinylog) | ||||||
|          * [Log](ref.md#log) |          * [Log](class_reference.md#log) | ||||||
|          * [Memory](ref.md#memory) |          * [Memory](class_reference.md#memory) | ||||||
|          * [MergeTree](ref.md#mergetree) |          * [MergeTree](class_reference.md#mergetree) | ||||||
|          * [Buffer](ref.md#buffer) |          * [Buffer](class_reference.md#buffer) | ||||||
|          * [CollapsingMergeTree](ref.md#collapsingmergetree) |          * [CollapsingMergeTree](class_reference.md#collapsingmergetree) | ||||||
|          * [SummingMergeTree](ref.md#summingmergetree) |          * [SummingMergeTree](class_reference.md#summingmergetree) | ||||||
|          * [ReplacingMergeTree](ref.md#replacingmergetree) |          * [ReplacingMergeTree](class_reference.md#replacingmergetree) | ||||||
|       * [infi.clickhouse_orm.query](ref.md#infi.clickhouse_orm.query) |       * [infi.clickhouse_orm.query](class_reference.md#infi.clickhouse_orm.query) | ||||||
|          * [QuerySet](ref.md#queryset) |          * [QuerySet](class_reference.md#queryset) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4,6 +4,7 @@ generate_toc | ||||||
| ------------ | ------------ | ||||||
| Generates the table of contents (toc.md). Requires Pandoc. | Generates the table of contents (toc.md). Requires Pandoc. | ||||||
| Usage: | Usage: | ||||||
|  | 
 | ||||||
|     cd docs |     cd docs | ||||||
|     ../scripts/generate_toc.sh |     ../scripts/generate_toc.sh | ||||||
| 
 | 
 | ||||||
|  | @ -22,6 +23,29 @@ Usage: | ||||||
|     ../scripts/docs2html.sh |     ../scripts/docs2html.sh | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | generate_ref | ||||||
|  | ------------ | ||||||
|  | Generates a class reference. | ||||||
|  | Usage: | ||||||
|  | 
 | ||||||
|  |     cd docs | ||||||
|  |     ../bin/python ../scripts/generate_ref.py > class_reference.md | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | generate_all | ||||||
|  | ------------ | ||||||
|  | Does everything: | ||||||
|  | 
 | ||||||
|  |     - Generates the class reference using generate_ref | ||||||
|  |     - Generates the table of contents using generate_toc | ||||||
|  |     - Converts to HTML for visual inspection using docs2html | ||||||
|  | 
 | ||||||
|  | Usage: | ||||||
|  | 
 | ||||||
|  |     cd docs | ||||||
|  |     ../scripts/generate_all.sh | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| test_python3 | test_python3 | ||||||
| ------------ | ------------ | ||||||
| Creates a Python 3 virtualenv, clones the project into it, and runs the tests. | Creates a Python 3 virtualenv, clones the project into it, and runs the tests. | ||||||
|  |  | ||||||
							
								
								
									
										8
									
								
								scripts/generate_all.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								scripts/generate_all.sh
									
									
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,8 @@ | ||||||
|  | # Class reference | ||||||
|  | ../bin/python ../scripts/generate_ref.py > class_reference.md | ||||||
|  | 
 | ||||||
|  | # Table of contents | ||||||
|  | ../scripts/generate_toc.sh | ||||||
|  | 
 | ||||||
|  | # Convert to HTML for visual inspection | ||||||
|  | ../scripts/docs2html.sh | ||||||
|  | @ -63,10 +63,14 @@ def get_method_sig(method): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def docstring(obj): | def docstring(obj): | ||||||
|     doc = (obj.__doc__ or '').strip() |     doc = (obj.__doc__ or '').rstrip() | ||||||
|     if doc: |     if doc: | ||||||
|         for line in doc.split('\n'): |         lines = doc.split('\n') | ||||||
|             print line.strip() |         # Find the length of the whitespace prefix common to all non-empty lines | ||||||
|  |         indentation = min(len(line) - len(line.lstrip()) for line in lines if line.strip()) | ||||||
|  |         # Output the lines without the indentation | ||||||
|  |         for line in lines: | ||||||
|  |             print line[indentation:] | ||||||
|         print |         print | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -14,4 +14,4 @@ generate_one "table_engines.md" | ||||||
| generate_one "schema_migrations.md" | generate_one "schema_migrations.md" | ||||||
| generate_one "system_models.md" | generate_one "system_models.md" | ||||||
| generate_one "contributing.md" | generate_one "contributing.md" | ||||||
| generate_one "ref.md" | generate_one "class_reference.md" | ||||||
|  |  | ||||||
|  | @ -23,6 +23,10 @@ class DatabaseException(Exception): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class Database(object): | class Database(object): | ||||||
|  |     ''' | ||||||
|  |     Database instances connect to a specific ClickHouse database for running queries,  | ||||||
|  |     inserting data and other operations. | ||||||
|  |     ''' | ||||||
| 
 | 
 | ||||||
|     def __init__(self, db_name, db_url='http://localhost:8123/', username=None, password=None, readonly=False): |     def __init__(self, db_name, db_url='http://localhost:8123/', username=None, password=None, readonly=False): | ||||||
|         ''' |         ''' | ||||||
|  |  | ||||||
|  | @ -98,8 +98,10 @@ class ReplacingMergeTree(MergeTree): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class Buffer(Engine): | class Buffer(Engine): | ||||||
|     """Here we define Buffer engine |     """ | ||||||
|     Read more here https://clickhouse.yandex/reference_en.html#Buffer |     Buffers the data to write in RAM, periodically flushing it to another table. | ||||||
|  |     Must be used in conjuction with a `BufferModel`. | ||||||
|  |     Read more [here](https://clickhouse.yandex/reference_en.html#Buffer). | ||||||
|     """ |     """ | ||||||
|      |      | ||||||
|     #Buffer(database, table, num_layers, min_time, max_time, min_rows, max_rows, min_bytes, max_bytes) |     #Buffer(database, table, num_layers, min_time, max_time, min_rows, max_rows, min_bytes, max_bytes) | ||||||
|  |  | ||||||
|  | @ -71,7 +71,13 @@ class ModelBase(type): | ||||||
| 
 | 
 | ||||||
| class Model(with_metaclass(ModelBase)): | class Model(with_metaclass(ModelBase)): | ||||||
|     ''' |     ''' | ||||||
|     A base class for ORM models. |     A base class for ORM models. Each model class represent a ClickHouse table. For example: | ||||||
|  |          | ||||||
|  |         class CPUStats(Model): | ||||||
|  |             timestamp = DateTimeField() | ||||||
|  |             cpu_id = UInt16Field() | ||||||
|  |             cpu_percent = Float32Field() | ||||||
|  |             engine = Memory() | ||||||
|     ''' |     ''' | ||||||
| 
 | 
 | ||||||
|     engine = None |     engine = None | ||||||
|  |  | ||||||
|  | @ -152,8 +152,17 @@ class Q(object): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class QuerySet(object): | class QuerySet(object): | ||||||
|  |     """ | ||||||
|  |     A queryset is an object that represents a database query using a specific `Model`.  | ||||||
|  |     It is lazy, meaning that it does not hit the database until you iterate over its  | ||||||
|  |     matching rows (model instances). | ||||||
|  |     """ | ||||||
| 
 | 
 | ||||||
|     def __init__(self, model_cls, database): |     def __init__(self, model_cls, database): | ||||||
|  |         """ | ||||||
|  |         Initializer. It is possible to create a queryset like this, but the standard | ||||||
|  |         way is to use `MyModel.objects_in(database)`. | ||||||
|  |         """ | ||||||
|         self._model_cls = model_cls |         self._model_cls = model_cls | ||||||
|         self._database = database |         self._database = database | ||||||
|         self._order_by = [f[0] for f in model_cls._fields] |         self._order_by = [f[0] for f in model_cls._fields] | ||||||
|  | @ -168,7 +177,7 @@ class QuerySet(object): | ||||||
| 
 | 
 | ||||||
|     def __bool__(self): |     def __bool__(self): | ||||||
|         """ |         """ | ||||||
|         Return true if this queryset matches any rows. |         Returns true if this queryset matches any rows. | ||||||
|         """ |         """ | ||||||
|         return bool(self.count()) |         return bool(self.count()) | ||||||
| 
 | 
 | ||||||
|  | @ -180,7 +189,7 @@ class QuerySet(object): | ||||||
|          |          | ||||||
|     def as_sql(self): |     def as_sql(self): | ||||||
|         """ |         """ | ||||||
|         Return the whole queryset as SQL. |         Returns the whole query as a SQL string. | ||||||
|         """ |         """ | ||||||
|         fields = '*' |         fields = '*' | ||||||
|         if self._fields: |         if self._fields: | ||||||
|  | @ -190,7 +199,7 @@ class QuerySet(object): | ||||||
| 
 | 
 | ||||||
|     def order_by_as_sql(self): |     def order_by_as_sql(self): | ||||||
|         """ |         """ | ||||||
|         Return the contents of the queryset's ORDER BY clause. |         Returns the contents of the query's `ORDER BY` clause as a string. | ||||||
|         """ |         """ | ||||||
|         return ', '.join([ |         return ', '.join([ | ||||||
|             '%s DESC' % field[1:] if field[0] == '-' else field |             '%s DESC' % field[1:] if field[0] == '-' else field | ||||||
|  | @ -199,7 +208,7 @@ class QuerySet(object): | ||||||
| 
 | 
 | ||||||
|     def conditions_as_sql(self): |     def conditions_as_sql(self): | ||||||
|         """ |         """ | ||||||
|         Return the contents of the queryset's WHERE clause. |         Returns the contents of the query's `WHERE` clause as a string. | ||||||
|         """ |         """ | ||||||
|         if self._q: |         if self._q: | ||||||
|             return ' AND '.join([q.to_sql(self._model_cls) for q in self._q]) |             return ' AND '.join([q.to_sql(self._model_cls) for q in self._q]) | ||||||
|  | @ -214,7 +223,7 @@ class QuerySet(object): | ||||||
|          |          | ||||||
|     def order_by(self, *field_names): |     def order_by(self, *field_names): | ||||||
|         """ |         """ | ||||||
|         Returns a new QuerySet instance with the ordering changed. |         Returns a new `QuerySet` instance with the ordering changed. | ||||||
|         """ |         """ | ||||||
|         qs = copy(self) |         qs = copy(self) | ||||||
|         qs._order_by = field_names |         qs._order_by = field_names | ||||||
|  | @ -222,7 +231,7 @@ class QuerySet(object): | ||||||
| 
 | 
 | ||||||
|     def only(self, *field_names): |     def only(self, *field_names): | ||||||
|         """ |         """ | ||||||
|         Limit the query to return only the specified field names. |         Returns a new `QuerySet` instance limited to the specified field names. | ||||||
|         Useful when there are large fields that are not needed, |         Useful when there are large fields that are not needed, | ||||||
|         or for creating a subquery to use with an IN operator. |         or for creating a subquery to use with an IN operator. | ||||||
|         """ |         """ | ||||||
|  | @ -232,7 +241,7 @@ class QuerySet(object): | ||||||
| 
 | 
 | ||||||
|     def filter(self, **kwargs): |     def filter(self, **kwargs): | ||||||
|         """ |         """ | ||||||
|         Returns a new QuerySet instance that includes only rows matching the conditions. |         Returns a new `QuerySet` instance that includes only rows matching the conditions. | ||||||
|         """ |         """ | ||||||
|         qs = copy(self) |         qs = copy(self) | ||||||
|         qs._q = list(self._q) + [Q(**kwargs)] |         qs._q = list(self._q) + [Q(**kwargs)] | ||||||
|  | @ -240,7 +249,7 @@ class QuerySet(object): | ||||||
| 
 | 
 | ||||||
|     def exclude(self, **kwargs): |     def exclude(self, **kwargs): | ||||||
|         """ |         """ | ||||||
|         Returns a new QuerySet instance that excludes all rows matching the conditions. |         Returns a new `QuerySet` instance that excludes all rows matching the conditions. | ||||||
|         """ |         """ | ||||||
|         qs = copy(self) |         qs = copy(self) | ||||||
|         qs._q = list(self._q) + [~Q(**kwargs)] |         qs._q = list(self._q) + [~Q(**kwargs)] | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user