我需要使用连接到mysql服务器但使用SQLAlchemy代码的mysqldb创建wordpress数据库。该表的SQL如下:
CREATE TABLE IF NOT EXISTS `wp_links` (
`link_id` bigint(20) unsigned NOT NULL auto_increment,
`link_url` varchar(255) NOT NULL default '',
`link_name` varchar(255) NOT NULL default '',
`link_image` varchar(255) NOT NULL default '',
`link_target` varchar(25) NOT NULL default '',
`link_description` varchar(255) NOT NULL default '',
`link_visible` varchar(20) NOT NULL default 'Y',
`link_owner` bigint(20) unsigned NOT NULL default '1',
`link_rating` int(11) NOT NULL default '0',
`link_updated` datetime NOT NULL default '0000-00-00 00:00:00',
`link_rel` varchar(255) NOT NULL default '',
`link_notes` mediumtext NOT NULL,
`link_rss` varchar(255) NOT NULL default '',
PRIMARY KEY (`link_id`),
KEY `link_visible` (`link_visible`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
这是我编写的用于执行相同操作的python代码:
wp_links = []#links table
wp_links.append (Table ('wp_links', metadata, Column ('link_id', BIGINT(20, unsigned=True),nullable=False, primary_key=True),
Column('link_url', VARCHAR(255), nullable=False, server_default=''),
Column('link_name', VARCHAR(255), nullable=False, server_default=''),
Column('link_image', VARCHAR(255), nullable=False, server_default=''),
Column('link_target', VARCHAR(255), nullable=False, server_default=''),
Column('link_description', VARCHAR(255), nullable=False, server_default=''),
Column('link_visible', VARCHAR(20), key='link_visible', nullable=False, server_default='Y'),
Column('link_owner', BIGINT(20, unsigned=True), nullable=False, server_default='1'),
Column('link_rating', INTEGER(11), nullable=False, server_default='0'),
Column('link_updated', DATETIME(), nullable=False, server_default='0000-00-00 00:00:00'),
Column('link_rel', VARCHAR(255), nullable=False, server_default=''),
Column('link_notes', MEDIUMTEXT(), nullable=False),
Column('link_rss', VARCHAR(255), nullable=False, server_default='')))
转换为以下SQL:
CREATE TABLE IF NOT EXISTS `wp_links` (
`link_id` bigint(20) unsigned NOT NULL auto_increment,
`link_url` varchar(255) NOT NULL default '',
`link_name` varchar(255) NOT NULL default '',
`link_image` varchar(255) NOT NULL default '',
`link_target` varchar(255) NOT NULL default '',
`link_description` varchar(255) NOT NULL default '',
`link_visible` varchar(20) NOT NULL default 'Y',
`link_owner` bigint(20) unsigned NOT NULL default '1',
`link_rating` int(11) NOT NULL default '0',
`link_updated` datetime NOT NULL default '0000-00-00 00:00:00',
`link_rel` varchar(255) NOT NULL default '',
`link_notes` mediumtext NOT NULL,
`link_rss` varchar(255) NOT NULL default '',
PRIMARY KEY (`link_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
注意区别,“KEY link_visible
(link_visible
)”行不存在。如何更正我的Python代码以使它们相同?
答案 0 :(得分:0)
查看MYSQL文档:
KEY通常是INDEX的同义词。当在列定义中给出时,键属性PRIMARY KEY也可以被指定为KEY。这是为了与其他数据库系统兼容而实现的。
所以我会看看
http://www.sqlalchemy.org/docs/core/schema.html#indexes
可以使用列上的内联索引关键字为单个列匿名创建索引(使用自动生成的名称ix_)