如何使用pymysql从python列名和数据类型列表进行动态的create table mysql查询?

mlnl4t2r  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(324)

我有以下数据:

table_name=xyz
column_names=['c1', 'c2', 'c3', 'c4']
column_datatypes=['VARCHAR(40)', 'BIGINT(40)', 'BIGINT(20)', 'VARCHAR(10)']

我正在从一个文件中读取。也就是说,上述列表的长度可能会有所不同。因此,我想创建一个动态的“create table”mysql查询,例如:

CREATE TABLE xyz(c1 VARCHAR(40),c2 BIGINT(40),c3 BIGINT(20),c4 VARCHAR(10));

如何伪造如上所述的字符串查询(可能使用string.format())?
另外,请投票的问题(如果值得),因为我即将被阻止提出进一步的问题,因为我以前的问题没有得到任何表决。

gkn4icbw

gkn4icbw1#

干得好!

import MySQLdb as mdb

table_name='xyz'
column_names=['c1', 'c2', 'c3', 'c4']
column_datatypes=['VARCHAR(40)', 'BIGINT(40)', 'BIGINT(20)', 'VARCHAR(10)']

db=mdb.connect(host='localhost',user='root',passwd='*****',db='test',port=3306)
cursor=db.cursor()

create_stement='create table '+table_name + '('
i=0
while i< len(column_names)-1 :

    create_stement =create_stement +column_names[i] +'  '+column_datatypes[i]+' ,'
    i=i+1

create_stement =create_stement +column_names[i] +'  '+column_datatypes[i]+' )'

print(create_stement)
cursor.execute(create_stement)
print('Done')

相关问题