将列表转换为 BigQuery table python
convert list to BigQuery table python
result = {'data1': [1,2], 'data2': [4,5]}
如果我的键只有一个值,我知道如何写,但我在这种情况下它有一个值列表,我可以如何迭代。在 BigQuery 中创建 table,如下所示:
| data1 | data2 |
| -------- | -------------- |
| 1 | 4 |
| 2 | 5 |
我遇到了同样的问题,但找不到解决方案,所以我所做的(我们所有的数据库都在我们的代码中作为服务进行管理)如下:
我正在获取 table id,然后使用 get_table(table_id)
.
现在我将 table._properties['schema']['fields']
和列表数据发送到一个函数,该函数将其转换为 Json
def __Convert_Data_To_Json(self,data,table_fields):
if not(len(table_fields)==len(data[0])):
raise CannotCreateConnectionError(CANNOT_CREATE_CONNECTION_MESSAGE % str('Data length doesnt match table feild list'))
for row in data:
dataset={}
i=0
for col in row:
if col==None:
dataset[list(table_fields[i].values())[0] ]=None
else:
dataset[list(table_fields[i].values())[0] ]=str(col)
i+=1
self.__rows_to_insert.append(dataset)
然后使用 insert_rows_json
result = {'data1': [1,2], 'data2': [4,5]}
如果我的键只有一个值,我知道如何写,但我在这种情况下它有一个值列表,我可以如何迭代。在 BigQuery 中创建 table,如下所示:
| data1 | data2 |
| -------- | -------------- |
| 1 | 4 |
| 2 | 5 |
我遇到了同样的问题,但找不到解决方案,所以我所做的(我们所有的数据库都在我们的代码中作为服务进行管理)如下:
我正在获取 table id,然后使用 get_table(table_id)
.
现在我将 table._properties['schema']['fields']
和列表数据发送到一个函数,该函数将其转换为 Json
def __Convert_Data_To_Json(self,data,table_fields):
if not(len(table_fields)==len(data[0])):
raise CannotCreateConnectionError(CANNOT_CREATE_CONNECTION_MESSAGE % str('Data length doesnt match table feild list'))
for row in data:
dataset={}
i=0
for col in row:
if col==None:
dataset[list(table_fields[i].values())[0] ]=None
else:
dataset[list(table_fields[i].values())[0] ]=str(col)
i+=1
self.__rows_to_insert.append(dataset)
然后使用 insert_rows_json