python - 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), "
是否有可能得到一个单线?
谢谢!
解决方案
首先,让我们使用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})'
推荐阅读
- salesforce - 使用命名凭据的 Salesforce 标注
- php - PHP 卷曲字段
- python - Pythonic 的重复方式,直到返回值不是 None
- python -
- c# - 我无法单击组合框并更改 item.in wpf
- python - setuptools setup_requires 和 install_requires 行为不同
- redhat-openjdk - 哪个 App Server 同时支持 AdoptOpenJdk11.0.3 和 RedHat Open jdk 11.0.3?
- selenium - 有什么工具可以在IE浏览器中找到xpath
- microdata - 如何删除使用 JSON+LD 的商店软件标准标记?
- excel - 如何在 vb.net 中加载和 excel 插件?