Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试将变量作为表名和值插入时出现mysql语法错误_Mysql_Python 3.x_Syntax_Sql Insert - Fatal编程技术网

尝试将变量作为表名和值插入时出现mysql语法错误

尝试将变量作为表名和值插入时出现mysql语法错误,mysql,python-3.x,syntax,sql-insert,Mysql,Python 3.x,Syntax,Sql Insert,虽然我能够使用上述方法毫无问题地创建表,但对于代码的第二部分,我得到了语法错误,我不知道原因。尝试使用格式化功能,但不起作用。 这是我得到的错误: 1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用接近“,(1,인비저블맨, 比率:6.7,예매율25.2%)),第1行的插入表格为: if conn.is_connected(): cursor = conn.cursor()

虽然我能够使用上述方法毫无问题地创建表,但对于代码的第二部分,我得到了语法错误,我不知道原因。尝试使用格式化功能,但不起作用。 这是我得到的错误:


1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用接近“,(1,인비저블맨, 比率:6.7,예매율25.2%)),第1行的插入表格为:

            if conn.is_connected():
                cursor = conn.cursor()
                sql = '''CREATE TABLE IF NOT EXISTS `%s`(
                id INT AUTO_INCREMENT PRIMARY KEY,
                title VARCHAR(255) NOT NULL,
                rating VARCHAR(255) NOT NULL, 
                reservation_rate VARCHAR(255) NOT NULL
                )''' % day
                cursor.execute(sql)            


            x = 1
            for i in range(len(title_rank)):
                title = rank[0][i]
                rating = rank[1][i]
                reservation = rank[2][i]
                cursor.execute("""INSERT INTO `%s`(id, title, rating, reservation_rate), (%d, %s, %s, %s))
                """%(day, x, title, rating, reservation))
                x += 1
                conn.commit()
的语法不正确

您还需要绝对确定正在使用带有占位符值的
execute

INSERT INTO `%s`(id, title, rating, reservation_rate) VALUES (%d, %s, %s, %s)

切勿使用字符串插值来代替
%
。这就为您打开了大门。

为什么您要为每件事创建表,而不是使用一个表和一列的关系表结构?谢谢您的帮助,但我的问题是,我是否可以使用变量作为表名并插入变量作为值,尽一切可能避免这种情况,比如没有动态表名。如果必须使用动态表名,则单独组合查询的这一部分,如
(“插入%s(…)”%(day))+“(%d,%…)”,(…)
,在绝大多数情况下,这样的多个表不值得一天一天地分解出来。这使得做简单的查询非常恼火。如果您有这么多记录,您需要以某种方式分割数据,那么您需要表分区或水平分片,而不是多个具有动态名称的表。
 cursor.execute("""INSERT INTO tablename (id, title, rating, reservation_rate), (%d, %s, %s, %s))
            """, (day, x, title, rating, reservation))