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}])
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()
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)
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)
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
def save(self): """ Saves the user to the database """ create = Create("users", self._keys) create_records(self._keys, create, [self._user])