这是我的代码片段 -
import datetime
from snowflake import connector
from snowflake.connector.pandas_tools import write_pandas
import pandas as pd
import pickle
class SnowflakeDataFetcher:
def __init__(self):
self.username = '***'
self.password = '***'
self.ctx_a = connector.connect(user=self.username, password=self.password, account='***',
warehouse='***', database='***', schema='***', role='***')
def upload_data(self, mode, data, tablename, virt_date):
if mode == 'test_table_upload':
data.info()
query_output = write_pandas(self.ctx_a, data, table_name=tablename)
print("Success!")
if __name__ == "__main__":
snowflake_data_fetcher = SnowflakeDataFetcher()
with open(r'***', 'rb') as gtc_data_pickle:
gtc_data = pickle.load(gtc_data_pickle)
snowflake_data_fetcher.upload_data('test_table_upload', gtc_data, "TEST_DATA", datetime.date(2021, 3, 17))
这是数据框的样子:
这是我的 data.info()
对于我的 gtc 数据框的样子:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10056 entries, 0 to 10055
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Datetime 10056 non-null object
1 Date 10056 non-null object
2 GTC Name 10056 non-null object
dtypes: object(3)
memory usage: 235.8+ KB
我不明白为什么会出现此错误:
snowflake.connector.errors.ProgrammingError: 100072 (22000): NULL result in a non-nullable column
我的数据框中没有看到任何空值,但我仍然收到此错误。帮助!
答案 0 :(得分:1)
问题似乎与“GTC 名称”中的空格字符有关。如果您使用 GTC_Name(在您的 DataFrame 和表上),它将起作用。