Python 如何从2000年开始使用monthnames创建Mysql表

Python 如何从2000年开始使用monthnames创建Mysql表,python,mysql,Python,Mysql,如何创建一个Mysql表,其列名为从2000年到现在的MonthNumber 例如: 从2000年到本月,使用python脚本生成这些val_yyyymm的方法是否更短?Omg有很多种方法!这里有一个 print( "\n".join([ "CREATE TABLE abc_horizontal", "(PRIMARY KEY (a_fips)", ", a_fips INT(7)", "\n".join([ ", val_20%02d%02d

如何创建一个Mysql表,其列名为从2000年到现在的MonthNumber

例如:


从2000年到本月,使用python脚本生成这些val_yyyymm的方法是否更短?

Omg有很多种方法!这里有一个

print( "\n".join([
    "CREATE TABLE abc_horizontal",
    "(PRIMARY KEY (a_fips)",
    ", a_fips INT(7)",
    "\n".join([ 
        ", val_20%02d%02d DEC(8,4)"%(x,y+1)
        for x in range(18)
        for y in range(12)
        if not (x == 17 and y >= 04) 
    ]),
    " );"
] ) )
你可能真正想要的是这样的东西

CREATE TABLE abc_horizontal (
    PRIMARY KEY (a_fips, reporting_date), 
    a_fips INT(7), 
    reporting_date CHAR(6),
    value DEC(8,4)
);

坏表设计。。。MySQL对每个表有4096列的硬限制,但对于给定的表,有效的最大值可能更小。阅读一些创建水平表所需的业务逻辑,不确定MySQL是否也是明智的选择。也许柱状数据库更好在第二个创建表中您建议使用垂直表而不是水平表吗?这将是标准的。与其说是“垂直”,不如说是“标准化”
CREATE TABLE abc_horizontal (
    PRIMARY KEY (a_fips, reporting_date), 
    a_fips INT(7), 
    reporting_date CHAR(6),
    value DEC(8,4)
);