使用Python中的列名列表在MariaDB中创建表

时间:2019-02-12 20:16:38

标签: python mysql

我正在尝试使用python在mariadb中创建表。我将所有列名存储在列表中,如下所示。

collist = ['RR', 'ABPm', 'ABPs', 'ABPd', 'HR', 'SPO']

这只是示例列表。实际列表中有200个项目。我正在尝试使用上述collist元素作为列创建表,并且列的数据类型为VARCHAR。

这是我用来创建表格的代码

for p in collist: cur.execute('CREATE TABLE IF NOT EXISTS table1 ({} VARCHAR(45))'.format(p)

上面的代码正在执行,但是仅列表的第一个元素被添加为表中的一列,而我看不到其余元素。如果能得到帮助,我将非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以将字符串分为3部分,然后.join()一起构建。中间部分是列定义,将原始列表中的每个项目连接在一起。这似乎并不特别健康。无论是列数还是所有内容都是VARCHAR(45),但这都是您的决定:

collist = ['RR', 'ABPm', 'ABPs', 'ABPd', 'HR', 'SPO']

query = ''.join(["(CREATE TABLE IF NOT EXISTS table1 ",
                ' VARCHAR(45), '.join(collist),
                ' VARCHAR(45))'])

由于我们使用了join,因此您需要单独指定最后一列类型(列表中的第三项)以正确关闭查询。

注意::如果输入数据来自用户输入,则这很容易受到SQL注入的影响,因为您只是在格式化要执行的未知字符串。我假设列名列表在您的程序内部。