gpt4 book ai didi

Python+sqlAlchemy : change dtype object to string dynamically

转载 作者:太空宇宙 更新时间:2023-11-04 07:33:43 24 4
gpt4 key购买 nike

简而言之:我想为所有 Pandas 数据帧中的所有对象列动态地将对象转换为字符串。我看过类似的关于单一转换的帖子,但没有一个涉及动态转换为字符串。

我正在使用 Python 3.x 将多个 JSON 文件写入我们的 SQL Server 数据库。当我导入 JSON 文件并将其存储在 Pandas DF 中时,所有字符串都存储为一个对象,因为长度事先未知。因此,当我将数据写入 SQL Server 时,数据类型被选择为 text 而不是 varchar(255)

有没有办法将所有dtype为object的列动态转换为dtype string?字符串可能会在前 255 个字符处被截断。

我尝试了以下方法,但让 Python 崩溃了......

url = 'some-url-to-json-file'
params['connectionString'] = 'driver://user:pw@server/database'
engine = sqlalchemy.create_engine(connectionString)
response = requests.get(url)
pandasDF = pandas.DataFrame(response.json()['value'])

# Convert Objects to Strings
for cName in list(pandasDF.columns.values):
if pandasDF[cName].dtype == 'object':
pandasDF[cName] = pandasDF[cName].to_string
pandasDF.to_sql(tableName, engine, if_exists = 'append')

最佳答案

您可以使用 sqlalchemy String 类型来代替默认的 Text 类型数据框。

to_sql 中使用 dtype 参数并使用 sqlalchemy.sql.sqltypes.String 提供这些列的字典映射,如下所示:

from sqlalchemy.types import String

obj_cols = pandasDF.select_dtypes(include=[object]).columns.values.tolist()
pandasDF.to_sql(tableName, engine, if_exists='append', dtype={c: String for c in obj_cols})

这些会将您的 object 数据映射到 String SQL 数据类型。

关于Python+sqlAlchemy : change dtype object to string dynamically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41363343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com