首页 > 解决方案 > Python 生成创建表

问题描述

我有一个表,其中所有 120 个字段都有 varchar(75) 类型。我已经这样编码了。

sql = "create table " + tableName + "("
for i in range(len(flds)):
    if i == len(flds) - 1:
        sql += flds[i] + " varchar(75))"
    else:
        sql += flds[i] + " varchar(75), "

是否有可能得到一个单线?

谢谢!

标签: python

解决方案


首先,让我们使用join,这样我们就不需要逗号和if. 而且,当我们这样做时,我们可以循环flds而不是range(len(flds))

columns = []
for fld in flds:
    columns.append(fld + " varchar(75)"

当然,这意味着我们必须)在最后添加 on:

sql += ', '.join(columns) + ')'

现在我们可以把这个循环变成一个理解:

columns = (fld + " varchar(75)" for fld in flds)

现在,我们可以将其内联到join

sql += ', '.join(fld + " varchar(75)" for fld in flds) + ')'

现在,我们有两行显然可以合并为一行:

sql = "create table " + tableName + "(" + ', '.join(fld + " varchar(75)" for fld in flds) + ')'

但那是超过 80 个字符,所以最好还是把它写成两行。我可能会这样做:

columns = ', '.join(fld + " varchar(75)" for fld in flds)
sql = "create table " + tableName + "(" + columns + ")"

最后,让我们使用 f 字符串而不是与 连接+,这只会使内容更短一点,但更具可读性。

columns = ', '.join(f'{fld} varchar(75)' for fld in flds)
sql = f'create table {tableName} ({columns})'

推荐阅读