Python 将字符串转换为对象

时间:2021-05-12 22:01:37

标签: python pandas string sqlalchemy

我正在使用 pandas/sql alchemy 将表写入 sql 数据库。

下面是一些示例代码:

df.to_sql('table', connection, schema=None, dtype={
    'id': sa.types.VARCHAR(length=100),
    'value1': sa.types.Float(),
    'value2': sa.types.Float()})

我有一个 csv 文件,其中定义了每列的数据类型,我希望能够使用 Pandas 读取 csv 文件,然后将表转换为将传递给 to_sql()方法。

如果我直接这样做,数据类型,例如 sa.types.VARCHAR(length=100) 将显示为字符串。我如何转换这个字符串,以便它可以作为适当的数据类型传递。

为了说明我是否从 csv 表中读取数据,dtype 字典将如下所示:

{'id': 'sa.types.VARCHAR(length=100)'}

而不是当前:

{'id': sa.types.VARCHAR(length=100)}

1 个答案:

答案 0 :(得分:0)

这个解决方案很笨拙,如果我们拥有所有信息,我必须相信有更好的方法,但除此之外,这里是。

我会创建一个类似于以下内容的字典:

type_dict = {
   'VARCHAR' : sa.types.VARCHAR,
   'Float'   : sa.types.Float, 
   ... }

然后,拆分该字符串以获取您要查找的主要信息(我确定有更好的正则表达式方法可以做到这一点,但它已经过了我的就寝时间):

dtype = string.split('(')[0].split('.')[-1]
var   = string.split('(')[1].split('=').split(')')[0]

那么:

sql_dict = { 'id' : type_dict[dtype](var) }
相关问题