예제 #1
0
    def test_insert_qb(self, x_conn):
        rows = [
            {
                'id': 1,
                'value': '2',
                'col1': 1223.4,
                'col2': datetime.datetime.now(),
                'colb': True
            },
            {
                'id': 2,
                'value': None,
                'col1': None,
                'col2': None,
                'colb': None
            },
        ]
        sql, params = query_builder.multi_insert('x', *rows)

        res = x_conn.query(sql, **params)
        assert isinstance(res, int)
        assert res == 2  # 2 affected row

        all_rows = x_conn.query('SELECT * FROM x ORDER BY id ASC')
        assert len(all_rows) == 2
        assert all_rows[0].value == 2
        assert all_rows[0].col1 == "1223.4"
        assert all_rows[1].value == None
예제 #2
0
def test_multi_insert():
    rows = [{'a': 1, 'b': '2', 'c': 1223.4}, {'a': 2, 'b': '5', 'c': 1}]
    sql, params = query_builder.multi_insert('foo', *rows)
    assert sql == 'INSERT INTO `foo` (`a`, `b`, `c`) VALUES (%(_QB_ROW_0)s), (%(_QB_ROW_1)s)'
    assert params == {'_QB_ROW_0': [1, '2', 1223.4], '_QB_ROW_1': [2, '5', 1]}
    assert database.escape_query(
        sql, params
    ) == r"INSERT INTO `foo` (`a`, `b`, `c`) VALUES (1,'2',1223.4), (2,'5',1)"
예제 #3
0
def insert_data(data,indexname):
    """
    :param data: Accepts list of dicts
    :param indexname: tablename in MEMSql
    :return:
    """
    if cache_state == 0: return True
    print 'Inserting data to cache...'
    tablename = indexname
    #TODO Check if data is null (skip take is exceeded)
    for item in data:
        try:
            item.update((k, str(v)) for k, v in item.iteritems() if k == "__osHeaders")
        except:
            print "cant update"
    sql, params = multi_insert(tablename,*data)
    with get_connection() as conn:
        try:
             c = conn.execute(sql,**params)
        except Exception, err:
            print err
            raise
        print 'Cache insertion successful!'
        return c
예제 #4
0
def test_multi_insert():
    rows = [{ 'a': 1, 'b': '2', 'c': 1223.4 }, { 'a': 2, 'b': '5', 'c': 1 }]
    sql, params = query_builder.multi_insert('foo', *rows)
    assert sql == 'INSERT INTO `foo` (`a`, `b`, `c`) VALUES (%(_QB_ROW_0)s), (%(_QB_ROW_1)s)'
    assert params == { '_QB_ROW_0': [1, '2', 1223.4], '_QB_ROW_1': [2, '5', 1] }
    assert database.escape_query(sql, params) == r"INSERT INTO `foo` (`a`, `b`, `c`) VALUES (1,'2',1223.4), (2,'5',1)"