示例#1
0
 def test_create_records(self):
     """
     Test create a record
     """
     mp = {"a": "integer"}
     keys = mp.keys()
     _db = Database.instance(":memory:", "test_table", mp)
     create = Create("test_table", keys)
     create_records(keys, create, [{"a": 1}, {"a": 2}])
示例#2
0
def write_csv_to_sql(filepath,
                     db=":memory:",
                     table="products",
                     headers=None,
                     has_headers=False,
                     table_mappings=None,
                     batch_size=100,
                     csv_mappings=None):
    """
    Writes a given CSV to a table

    Field mappings have the form
     {
        "product_id": "varchar",
        "cost": "double",
        "quantity": "integer"
    }

    :param filepath:    The file path
    :param db:  The database object
    :param table:   Name of the table
    :param headers: Headers list in the order they appear in the db
    :param has_headers: The headers
    :param table_mappings:  Table mappings for creation or None to avoid table creation
    :param batch_size:  Number of records per batch
    :param csv_mappings: If present, forces the mappings to conform
    """
    _conn = Database.instance(db, table, table_mappings)
    csv_headers = None
    if has_headers is False:
        csv_headers = headers
    elif headers:
        csv_headers = headers
    csv = CSVSource(filepath,
                    headers=csv_headers,
                    has_headers=has_headers,
                    batch_size=batch_size)
    try:
        for batch in csv:

            if len(batch) > 0:
                if has_headers:
                    record = batch[0]
                    if csv_headers is None:
                        headers = record.keys()
                    else:
                        csv_headers = headers
                query = Create(table, headers)
                if csv_mappings:
                    batch = prepare_batch(batch, csv_mappings)
                create_records(headers, query, batch)
    finally:
        csv.close()
示例#3
0
 def test_select(self):
     """
     Test the select
     """
     mp = {"a": "integer"}
     db = Database.instance(":memory:", "test_table", mp)
     keys = mp.keys()
     create = Create("test_table", keys)
     create_records(keys, create, [{"a": 1}, {"a": 2}])
     sel = Select("test_table", ["a"])
     sel.less_than_or_equal_to("a", 3)
     rvals = []
     for r in get_record(sel):
         rvals.append(r)
     assert (len(rvals) > 0)
示例#4
0
 def test_delete_record(self):
     mp = {"a": "integer"}
     _db = Database.instance(":memory:", "test_table", mp)
     keys = mp.keys()
     create = Create("test_table", keys)
     create_records(keys, create, [{"a": 1}, {"a": 2}])
     sel = Select("test_table", ["a"])
     sel.less_than_or_equal_to("a", 3)
     rvals = []
     for r in get_record(sel):
         rvals.append(r)
     d = Delete("test_table")
     d.greater_than("a", 1)
     delete_record(d)
     sel = Select("test_table", ["a"])
     sel.less_than_or_equal_to("a", 3)
     rvals = []
     for r in get_record(sel):
         rvals.append(r)
示例#5
0
    def save(self):
        """
        Save the order

        :return: Unique order uuid
        """
        if self._order.get("address", None) and self._order.get("city", None) and self._order.get("state"):
            if self._order.get("price", None) and self._order.get("quantity", None):
                self._order["total"] = self._order["price"] * self._order["quantity"]
            else:
                raise ValueError("Price and Quantity not Set")
            create = Create("orders", self._order.keys())
            create_records(
                self._order.keys(), create, [self._order])
            return self._order["order_id"]
        else:
            print("CANNOT CREATE ORDER WITHOUT A CITY STATE OR ADDRESS")
            print("ORDER NOT SUBMITTED")
            return -1
示例#6
0
 def save(self):
     """
     Saves the user to the database
     """
     create = Create("users", self._keys)
     create_records(self._keys, create, [self._user])