Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法将默认数据类型(CSV)动态更改为MySQL数据类型_Python_Mysql_Pandas - Fatal编程技术网

Python 有没有办法将默认数据类型(CSV)动态更改为MySQL数据类型

Python 有没有办法将默认数据类型(CSV)动态更改为MySQL数据类型,python,mysql,pandas,Python,Mysql,Pandas,我想将CSV数据传输到MySQL表 我读过CSV,它包含所有类型的数据,命令如下: file=pd.read\u csv'abc.csv' 要传输到MySQL,请使用以下命令: 如果存在,则返回file.to_sqlcon=engine,name='abc',index=True,dtype=None,method=None 这会将数据发送到MySQL表中,但它将数据类型作为text,bigint,但我希望它作为varchar&int CSV有50个列,所以为了克服这个问题,我只尝试了3个字段,

我想将CSV数据传输到MySQL表

我读过CSV,它包含所有类型的数据,命令如下: file=pd.read\u csv'abc.csv'

要传输到MySQL,请使用以下命令: 如果存在,则返回file.to_sqlcon=engine,name='abc',index=True,dtype=None,method=None

这会将数据发送到MySQL表中,但它将数据类型作为text,bigint,但我希望它作为varchar&int

CSV有50个列,所以为了克服这个问题,我只尝试了3个字段,数据类型={'index':sql_types.INT,'Employee ID':sql_types.INT,'Employee Name':sql_types.VARCHAR255},结果成功了

现在我必须将剩余的47个字段添加到这个数据类型字典中


所以我想知道,有没有办法自动转换数据类型而不提及其列名,比如..,当字段为数字时,将其转换为INT,当字段为字母数字时,将其转换为VARCHAR,当字段为日期类型时,将其转换为日期时间,这三行就足够了。

在CSV中读取后,您可以通过COL循环并更改它们:

for col in list(df):
    if df[col].dtype == 'O':
        df[col] == df[col].astype(sql_types.VARCHAR(255))
    elif df[col].dtype == 'int':
        df[col] == df[col].astype(sql_types.INT)
这是假设您已经从某个地方导入了这些sql_类型,因为它们不是内置的。但你说你可以用它们

如果您有日期格式,您可以尝试/except将其转换为pd.datetime,如果是,则将其另存为SQL日期类型