flask_sqlalchemy报错ProgrammingError: (pymysql.err.ProgrammingError)

发布于 2021-12-03 19:22:28 字数 2038 浏览 844 评论 2

主代码

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

裸钻 2021-12-08 04:38:04

你的id没有设置主键primary key,只有主键才能设置auto_increment

英雄似剑 2021-12-05 01:53:19

坐等,着急,求大神指点

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文