【问题标题】:sqlalchemy saving my df values as text type and i want varcharsqlalchemy 将我的 df 值保存为文本类型,我想要 varchar
【发布时间】:2016-12-16 20:14:15
【问题描述】:

我在 pandas df 中有一张桌子

main_id  p_x   p_y  flag   score
  1       10    20    Y    2.3333
  2       20    30    N    1.653
  3       39    2     Y    6.56546
  1       45    300   Y    2.345

我想把它存储在 mysql 数据库中。

我为此使用sqlalchemy。

from sqlalchemy import create_engine
engine_name = create_engine('mysql+mysqldb://'+username+':'+password+'@'+hostname+'/'+dbname, echo=False)

df.to_sql(name='table_name', con=engine_name, if_exists = 'append', index=False)

它正在我的数据库中成功创建。 但我的主要问题是

当我在 mysql 中做 describe table_name 时。

+---------------------+--------+------+-----+---------+-------+
| Field               | Type   | Null | Key | Default | Extra |
+---------------------+--------+------+-----+---------+-------+
| main_id             | text   | YES  |     | NULL    |       |
| p_x                 | text   | YES  |     | NULL    |       |
| p_y                 | text   | YES  |     | NULL    |       |
| flag                | text   | YES  |     | NULL    |       |
| score               | double | YES  |     | NULL    |       |
+---------------------+--------+------+-----+---------+-------+

该字段的类型为text

但我想要VARCHAR(40) 输入列的main_id p_x p_y flag

有什么办法吗?

【问题讨论】:

    标签: python pandas sqlalchemy


    【解决方案1】:

    可以指定列数据类型,panda默认使用TEXT:

    from sqlalchemy.types import String
    df.to_sql(name='table_name', con=engine_name, if_exists = 'append', index=False, 
            dtype={'main_id': String, 'p_x': String,  'p_y': String  'flag': String})
    

    sql-data-types

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多