鍍金池/ 問答/Python  數(shù)據(jù)庫/ python MySQLdb 創(chuàng)建表的問題

python MySQLdb 創(chuàng)建表的問題

各位大神好,我是python菜鳥一枚~~以前只用來做計算,現(xiàn)在準(zhǔn)備學(xué)習(xí)下開發(fā)簡單的python項目,現(xiàn)在遇到一個問題(可能很水,請輕拍 T_T)

問題如下:

讀文件,解析,然后寫入表中。
問題出在最后一個環(huán)節(jié),通過list傳參,得到要執(zhí)行的sql腳本中的字段有引號,mysql創(chuàng)建表失敗,

主要代碼如下:

sqlStr_create = '''
CREATE TEMPORARY TABLE temTB(
   %s INT UNSIGNED AUTO_INCREMENT,
   %s INT UNSIGNED,
   %s VARCHAR(50),
   %s VARCHAR(30),
   %s VARCHAR(50),
   %s VARCHAR(30),
   %s INT,
   %s VARCHAR(10),
   %s varchar(10),
   %s varchar(30),
   %s INT,
   %s varchar(20),
   %s INT,
   %s INT,
   %s INT,
   %s INT,
   %s varchar(20),
   %s varchar(20),
   PRIMARY KEY ( %s )
)ENGINE=MEMORY DEFAULT CHARSET=utf8;
'''
tem_list = ['id', 'age', 'job', 'marital', 'education', 'default', 'balance', 'housing', 'loan', 'contact', 'day', 'month', 'duration', 'campaign', 'pdays', 'previous', 'poutcome', 'y', 'id']
cursor.execute(sqlStr_create, tem_list)

報錯信息如下:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''id' INT UNSIGNED AUTO_INCREMENT,n 'age' INT UNSIGNED,n 'job' VARCHAR(50),n ' at line 2"))

回答
編輯回答
魚梓

CREATE TEMPORARY TABLE temTB(

id int    PRIMARY KEY AUTO_INCREMENT,
   age INT UNSIGNED,
   job VARCHAR(50),
   marital VARCHAR(30),
   education VARCHAR(50),
   `default` VARCHAR(30),
   balance INT,
   housing VARCHAR(10),
   loan VARCHAR(10),
   contact varchar(30),
   `day` INT,
   `month` varchar(20),
   duration INT,
   campaign INT,
   pdays INT,
   previous INT,
   poutcome varchar(20),
   y varchar(20)

)

2017年12月18日 16:05
編輯回答
瘋子范

tem_list改成元祖試試

2018年3月28日 15:51
編輯回答
墨沫

跟數(shù)據(jù)庫版本有區(qū)別
如果不是精通sql語句的話
還是推薦ORM比如sqlalchemy
創(chuàng)建表、表結(jié)構(gòu)同步、數(shù)據(jù)的CURD都有的,維護難度也小很多

2018年7月17日 06:17