Python生成创建表(Python Generate Create Table)

系统教程 行业动态 更新时间:2024-06-14 17:04:03
Python生成创建表(Python Generate Create Table)

我有一个表,其中所有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), "

是否有可能获得单线程?

谢谢!

I have a table in which all the 120 fields have got type varchar(75). I have coded like this.

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), "

Is it possible to get a one-liner for it?

Thanks!

最满意答案

首先,让我们使用join这样我们就不需要逗号和if 。 而且,虽然我们在它,我们可以循环flds而不是range(len(flds)) :

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

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

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})'

First, let's use join so we don't need the commas and if. And, while we're at it, we can just loop over flds instead of range(len(flds)):

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

Of course this means we have to add the ) on at the end:

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

Now we can turn that loop into a comprehension:

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

And now, we can inline that into the join:

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

And now, we have two lines that can obviously be combined into one:

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

But that's way over 80 characters, so probably better to write it as two lines anyway. I'd probably do it like this:

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

And finally, let's use an f-string instead of concatenating with +, which makes things only a little shorter, but a lot more readable.

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

更多推荐

本文发布于:2023-04-24 21:03:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/dzcp/dca708a0e1d3f6dd3f2f5c073939dfc5.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Generate   Python   Table   Create

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!