繁体   English   中英

SQLAlchemy 0.5.5-定义表架构

[英]SQLAlchemy 0.5.5 - defining table schema

我使用sqlautocode为现有的MySQL数据库生成了model.py,这是一个表示例:

fusion_articles =  Table('fusion_articles', metadata,
    Column(u'article_id', Integer(), primary_key=True, nullable=False),
            Column(u'article_cat', Integer(), primary_key=False, nullable=False),
            Column(u'article_subject', String(length=200, convert_unicode=False, assert_unicode=None), primary_key=False, nullable=False),
            Column(u'article_snippet', Text(length=None, convert_unicode=False, assert_unicode=None), primary_key=False, nullable=False),
            Column(u'article_article', Text(length=None, convert_unicode=False, assert_unicode=None), primary_key=False, nullable=False),
            Column(u'article_breaks', CHAR(length=1, convert_unicode=False, assert_unicode=None), primary_key=False, nullable=False),
            Column(u'article_name', Integer(), primary_key=False, nullable=False),
            Column(u'article_datestamp', Integer(), primary_key=False, nullable=False),
            Column(u'article_reads', Integer(), primary_key=False, nullable=False),
            Column(u'article_allow_comments', Boolean(), primary_key=False, nullable=False),
            Column(u'article_allow_ratings', Boolean(), primary_key=False, nullable=False),


    )

我见过的一些示例在ColumnInteger()和其他类似的数据类型前加上了从sqlalchemy导入的schema 我是否应该分别导入Column和其余的,例如:

>>> from sqlalchemy import Table, Column, Integer, String, MetaData
>>> metadata = MetaData()

还是应该总是给它们加上前缀?

schema.Tablemeta.metadata

在很大程度上,这是一种样式首选项,但也取决于代码的复杂程度。

如果您正在编写一个简短的隔离脚本,而该脚本很可能不会导入其他地方,那么将很多名称引入您的命名空间(例如,表,列)将不成问题,并使代码更易于阅读。

另一方面,如果您希望模块很大并且由其他模块或第三方导入,则希望保持名称空间尽可能整洁。 将Table和MetaData类放在单独的命名空间中可以使它们井井有条并明确地确定范围。 也就是说,如果您使用的是架构名称空间,则可以清楚地知道

>>> schema.Table

引用架构模块中的表,而不引用其他地方定义的表。

否则,对象是完全相同的。

>>> from sqlalchemy import schema
>>> from sqlalchemy import Table
>>> Table is schema.Table
True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM