我正在尝试使用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)
上面的代码正在执行,但是仅列表的第一个元素被添加为表中的一列,而我看不到其余元素。如果能得到帮助,我将非常感谢。
答案 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注入的影响,因为您只是在格式化要执行的未知字符串。我假设列名列表在您的程序内部。