我有一张单子叫 headers
大概有40-50个项目,我想把它们都放在一张table上。我尽量避免把它们都打出来,以下是我目前的情况:
def createtable_db():
cnx = mysql.connector.connect(user='x', password='x', host='x', database='data')
mycursor = cnx.cursor()
create_table = "CREATE TABLE IF NOT EXISTS players (id INT AUTO_INCREMENT PRIMARY KEY)"
for h in headers:
pop_table = "ALTER TABLE players ADD COLUMN "+ h +" VARCHAR(255)"
mycursor.execute(create_table)
mycursor.execute(pop_table)
cnx.close()
createtable_db()
这只会添加最后一个键,我尝试添加一个+来生成这行:
pop_table += "ALTER TABLE players ADD COLUMN "+ h +" VARCHAR(255)"
但这也不起作用:它给了我一个语法错误。
3条答案
按热度按时间uhry853o1#
下面的演示代码用于生成
pop_table
字符串作为ALTER TABLE
sql命令,每个要添加的列对应一个。你可以为单列命令创建一个列表,每个命令都在表单中
ADD columnName column format
为每个元素填充一个列数据节headers
join
它们可以构建完整的查询序列。ADD
各节之间必须用逗号分隔,
将联接列表附加到初始ALTER TABLE
. 查询以分号终止;
```headers = [ "Stack22", "overflow22", "rules22"]
header_columns_commands =[]
for h in headers:
header_columns_commands .append("ADD "+ h +" VARCHAR(255)")
pop_table = "ALTER TABLE players " + ",".join(header_columns_commands ) + ";"
print(pop_table)
ALTER TABLE players
ADD Stack VARCHAR(255),
ADD overflow VARCHAR(255),
ADD rules VARCHAR(255);
zkure5ic2#
尝试初始化
pop_table
然后在for循环内连接到它。您还可以将其初始化为空列表并附加生成的字符串
cpjpxq1n3#
如果你这样做的话?对不起,我有段时间没用了
mysql.connector
. 如果我没记错的话,multi
必须设置为True
如果要执行多个命令。