使用拼花文件处理箭头中的UUID值

2024-09-29 17:11:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚接触Python和熊猫-请温柔一点

我正在使用SqlAlchemy和pymssql对SQLServer数据库执行SQL查询,然后将结果集转换为数据帧。然后,我尝试将此数据帧作为拼花文件写入:

  engine = sal.create_engine(connectionString)

  conn = engine.connect()
  df = pd.read_sql(query, con=conn)
  df.to_parquet(outputFile)

我在SQL查询中检索的数据包括一个名为rowguiduniqueidentifier列(即UUID)。因此,我在上面的最后一行中得到以下错误:

pyarrow.lib.ArrowInvalid: ("Could not convert UUID('92c4279f-1207-48a3-8448-4636514eb7e2') with type UUID: did not recognize Python value type when inferring an Arrow data type", 'Conversion failed for column rowguid with type object')

是否有任何方法可以强制所有uuid在上述事件链中的任何一点使用字符串?

还有几个额外的注意事项:

  • 这部分代码的目标是接收作为参数的SQL查询文本,并充当一个通用的SQL to Parquet函数
  • 我意识到我可以做一些类似df['rowguid'] = df['rowguid'].astype(str)的事情,但这取决于我知道哪些列具有uniqueidentifier类型。当它成为一个数据帧时,一切都是一个object,每个查询都会不同
  • 我还知道我可以在SQL查询本身中将其转换为char(36),但是,我希望做一些更“自动”的事情,这样编写查询的人就不会一直意外地遇到这个问题/不必记得总是转换数据类型

有什么想法吗


Tags: to数据dfsqlobjectuuidsqlalchemytype

热门问题