Как сделать динамический MySQL-запрос CREATE TABLE из списка имен столбцов и типов данных, используемых в pymysql? - PullRequest
0 голосов
/ 06 июля 2018

У меня есть следующие данные:

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

То, что я читаю из файла .i.e Длина приведенных выше списков может варьироваться. Поэтому я хочу создать динамический запрос CREATE TABLE MySQL, например:

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

Как мне подделать строковый запрос, такой как выше (возможно, с помощью string.format ())?

Также, пожалуйста, поднимите вопрос (если он будет достоин), поскольку я нахожусь на грани того, чтобы мне было запрещено задавать дополнительные вопросы, поскольку мои предыдущие вопросы не получили никакого голосования.

1 Ответ

0 голосов
/ 06 июля 2018

Вот, пожалуйста!

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