engine

English Doc

Sqlite3Engine is the top class you are doing CRUD with. You could define the Engine by giving the database file path (for memory database, use ":memory:"). And this class provides full range of CRUD methods, it’s simple, straight forward like a human language

For all available methods, go Sqlite3Engine.

For example usage, click the link, and read the source code link:

  • Create table
  • CREATE (Insert)
  • READ (Select)
  • Update (Update)
  • Delete (Delete)
  • Index

Chinese Doc (中文文档)

Sqlite3Engine 这个类是我们使用 ·sqlite4dummy 时主要所使用的类。他提供 了一系列的简单易懂, 类似人类语言的方法完成我们常用的 “增删查改操作”。

请前往 Sqlite3Engine 查看我提供的所有方法。

请前往这里查看所有的使用例子(点击source code按钮即可看到例子源代码)。

  • 建立表
  • (Insert)
  • (Delete)
  • (Select)
  • (Update)
  • 建立索引

class, method, func, exception

class sqlite4dummy.engine.PickleTypeConverter(table)[source]

High performance PickleType data converter Class.

This is how we handle python type in sqlite database. If I have an entry:

>>> record = (1, [1, 2, 3])
>>> new_record = convert(record)
>>> new_record # (1, pickle.dumps([1, 2, 3])
(1, b'\x80\x03]q\x00(K\x01K\x02K\x03e.')

new_record is the one we saved in database. When I want to take data out, I do it reversely. So basically I am doing this:

picklable Python type <-- convert --> bytes

The way I convert it is defined by the schema of the Table. So PickleTypeConverter takes a Table as initialize argument. Then we compile the convert method. Once it is done, then we can make use of built-in high performance vectorize function map(func, iterable).

中文文档

用于解决PickleType的读写的数据转换器。

在执行INSERT时, 需要将tuple或row dict转换成sqlite3原生API可接受的tuple, 并 要保证PickleType正确地被序列化。

在执行Select时, 需要cursor返回的tuple转换成被pickle解码后的Python对象。

在这两个过程中, 需要有所有涉及到的Column的相关信息。我们的做法是在初始化 PickleTypeConverter时绑定Table, 然后绑定convert方法。这样就可以利用map高性能 并行处理函数, 批量转换数据。

convert_record(record)[source]

Covert PickleType value in record tuple to Blob.

Parameters:record (tuple or list) – input tuple data.
Returns:list that pickletype fields been converted.

中文文档

将record中的pickletype的项转化成blob。该方法用于在Insert操作之前对数据 进行预处理。返回list。

convert_row(row)[source]

Covert PickleType value in Row object to Blob. Returns list.

Parameters:record (Row) – input Row object data.
Returns:list that pickletype fields been converted.

中文文档

将Row对象中的pickletype的项转化成blob。该方法用于在Insert操作之前对数据 进行预处理。返回list。

recover_tuple_record(record)[source]

Convert PickleType value in record tuple that naive Python sqlite3 API returned to Python object, returns tuple.

中文文档

将原生API cursor.execute(“SELECT ...”) 所返回的record tuple, 如果其中有 PickleType, 则转换会Python object。最终返回tuple。

recover_list_record(record)[source]

Convert PickleType value in record tuple that naive Python sqlite3 API returned to Python object, returns list.

中文文档

将原生API cursor.execute(“SELECT ...”) 所返回的record tuple, 如果其中有 PickleType, 则转换会Python object。最终返回list。

recover_row(record)[source]

Convert PickleType value in record tuple that naive Python sqlite3 API returned to Python object, returns Row.

中文文档

将原生API cursor.execute(“SELECT ...”) 所返回的record tuple, 如果其中有 PickleType, 则转换会Python object。最终返回 Row

class sqlite4dummy.engine.Sqlite3Engine(dbname, autocommit=False, echo=False, log=False)[source]

A High level API of sqlite3 engine.

Database Level:

Insert:

Select:

Update:

Delete:

Vanilla method: sets of syntax sugar methods to reduce the code you need.

Property method:

close()[source]

Close the connection.

execute(sql, *args)[source]

Execute SQL command.

中文文档

执行原生 Cursor.execute 方法。

executemany(sql, *args)[source]

Call generic sqlite3 API bulk insert method.

中文文档

执行原生 Cursor.executemany 方法。

commit()[source]

Method for manually commit operation.

中文文档

执行commit。

commit_nothing()[source]

Method for doing nothing.

中文文档

什么都不做。

set_autocommit(flag)[source]

Switch on or off autocommit.

中文文档

设置自动commit开关。

set_logger(echo, log)[source]

Switch on or off echo Sql command.

convert_record(table, record)[source]

Non-compiled version of pickle record converter.

中文文档

PickleTypeConverter.convert_record() 的类似版本, 用于只执行一次的 insert和update的情况。

convert_row(table, row)[source]

Non-compiled version of pickle row converter.

中文文档

PickleTypeConverter.convert_row() 的类似版本, 用于只执行一次的 insert和update的情况。

insert_record(ins_obj, record)[source]

Insert single record.

Parameters:

中文文档

插入单条tuple或list数据。

insert_row(ins_obj, row)[source]

Insert single Row.

Parameters:

中文文档

插入单条 Row 数据。

insert_many_record(ins_obj, records)[source]

Insert many records, skip all primary-key conflict data.

Parameters:
  • ins_obj (Insert) – Insert object
  • generator (generator) – data stream

中文文档

插入多条tuple或list数据。

insert_many_row(ins_obj, rows)[source]

Insert many Row, skip all primary-key conflict data.

Parameters:
  • ins_obj (Insert) – Insert object
  • generator (generator) – data stream

中文文档

插入多条 Row 数据。

insert_record_stream(ins_obj, generator, cache_size=1024)[source]

Another version of insert_many_record(), take generator type input data stream.

Parameters:
  • ins_obj (Insert) – Insert object
  • generator (generator) – data stream
  • cache_size (int) – Execute how many data one at a time.

中文文档

以生成器形式插入多条tuple或list数据。

insert_row_stream(ins_obj, generator, cache_size=1024)[source]

Another version of insert_many_row(), take generator type input data stream.

Parameters:
  • ins_obj (Insert) – Insert object
  • generator (generator) – data stream
  • cache_size (int) – Execute how many data one at a time.

中文文档

以生成器的形式插入单条 Row 数据。

select(sel_obj, return_tuple=False)[source]

Execute Select object, if return_tuple=True, yield tuple, else, yield list.

中文文档

执行 Select 对象, 返回tuple数据

select_record(sel_obj, return_tuple=False)[source]

Alias of select()

中文文档

select() 的同功能方法。

select_row(sel_obj)[source]

Execute Select object, yield Row object.

中文文档

执行 Select 对象, 返回 Row 数据。

select_dict(sel_obj)[source]

Execute Select object, returns column oriented view of 2d-DataFrame.

Example returns:

{
    "column1": [value1, value2, ...],
    "column2": [value1, value2, ...],
    ...,
    "columnN": [value1, value2, ...],
}

中文文档

执行 Select 对象, 返回以列为导向的字典视图。

select_df(sel_obj)[source]

Execute Select object, returns pandas.DataFrame column oriented view. Faster than select_dict().

中文文档

执行 Select 对象, 返回 pandas.DataFrame 数据。

update(upd_obj)[source]

Execute Update object.

中文文档

执行 Update 对象。

insdate_many_record(ins_obj, records)[source]

INSDATE (insert or update), batch insert and update records.

If meet sql integrity error, then locate to the record via primary key, and update it. Here’s an example.

First we try:

INSERT INTO test
(_id, content)
VALUES 
(1, 'hello world')

Failed, then we do:

UPDATE test
SET content = 'hello world'
WHERE _id = 1

中文文档

智能插入和更新。

在尝试插入一条记录时, 如果字段中包括Primary Key, 那么可能出现 Integrity Error, 一旦发生冲突, 则使用WHERE主键Key定位到条目, 然后Update 其他字段:

INSERT INTO test
(_id, content)
VALUES 
(1, 'hello world')

冲突! 进行更新:

UPDATE test
SET content = 'hello world'
WHERE _id = 1

如果字段中不包括Primary Key, 则肯定能Insert成功。

insdate_many_row(ins_obj, rows)[source]

Another version taking Row object data.

中文文档

insdate_many_record() 的同功能方法, 只不过接受的是 Row 数据。

delete(del_obj)[source]

Execute Delete object.

中文文档

执行 Delete 对象。

drop_table(table)[source]

Drop a table by Table object (or by table name).

中文文档

删除某个表的所有数据, 结构, 索引。接受Table对象或table name字符串。

drop_index(index)[source]

Drop an index by Index object (or by index name).

中文文档

删除某个索引。接受Index对象或index name字符串。

howmany(table)[source]

Returns how many records in a table.

Parameters:table (Table object or string) – Represent the table you want to count with.

中文文档

返回表中有多少条记录。

tabulate(table)[source]

Return all data in a table in list of records format.

中文文档

以**list of list**的形式返回表中**所有**数据

dictize(table)[source]

Return all data in a table in json like, column oriented format.

中文文档

以**字典视图**的形式返回表中**所有**数据

to_df(table)[source]

Return all data and wrapped into a pandas.DataFrame object. Faster than dictize().

中文文档

以**pandas.DataFrame**的形式返回表中**所有**数据

prt_all(table)[source]

Print all records in a table.

Parameters:table (Table object) – The Table object.

中文文档

打印表中所有的记录。

remove_all(table)[source]

Remove all data in a table by Table object (or by table name).

中文文档

删除某个表中的数据。接受Table对象或table name字符串。

all_tablename

Returns list of table name in this database.

中文文档

返回数据库中的所有表名的list。

all_indexname

Returns list of index name in this database.

中文文档

返回数据库中的所有索引名的list。