flask_sqlalchemy报错ProgrammingError: (pymysql.err.ProgrammingError)
主代码
param = json.dumps(request.form)
param = json.loads(param)
table_name = param.pop('name')
column_str = ''
for x in range(len(param)/4):
name = param.get('name%s'%(x))
getunique = param.get('unique%s'%(x))
gettype = param.get('type%s'%(x))
getlen = int(param.get('len%d'%(x)))
column_str += '`%(name)s` %(type)s(%(len)s) DEFAULT NULL %(unique)s,'%({'name':name,'type':gettype,'len':getlen,'unique':getunique})
# SET FOREIGN_KEY_CHECKS=0;
# DROP TABLE IF EXISTS `%(table_name)s`;
# ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
creat_sql = r'''CREATE TABLE `%(table_name)s` (`id` int(11) NOT NULL AUTO_INCREMENT,%(column_str)s PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;'''%({'table_name':table_name,'column_str':column_str})
print(creat_sql)
db.session.execute(creat_sql).fetchall()
db.session.commit()
生成sql
SET FOREIGN_KEY_CHECKS=0;DROP TABLE IF EXISTS `test`;CREATE TABLE `test` (`id` int(11) NOT NULL AUTO_INCREMENT,`a` int(16) DEFAULT NULL unique,`b` varchar(32) DEFAULT NULL unique, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
报错
raise errorclass(errno, errval)
ProgrammingError: (pymysql.err.ProgrammingError) (1064, u"You have an error in y
our SQL syntax; check the manual that corresponds to your MySQL server version f
or the right syntax to use near 'CREATE TABLE `test` (`id` int(11) NOT NULL AUTO
_INCREMENT,`a` int(16) DEFAULT NU' at line 1") [SQL: u'DROP TABLE IF EXISTS `tes
t`;CREATE TABLE `test` (`id` int(11) NOT NULL AUTO_INCREMENT,`a` int(16) DEFAULT
NULL unique,`b` varchar(32) DEFAULT NULL unique, PRIMARY KEY (`id`)) ENGINE=MyI
SAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;'] (Background on this error at: http:
//sqlalche.me/e/f405)
求大神指点、里面的nr什么的都去除过了,有帖子说需要pymysql.escape_string()进行转义都试过了无法处理
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你的id没有设置主键primary key,只有主键才能设置auto_increment
坐等,着急,求大神指点