我在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
有什么办法吗?
答案 0 :(得分:0)
您可以指定列数据类型,默认情况下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})