微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql.connector.errors.ProgrammingError: 1054 (42S22): 'where 子句'中的未知列

如何解决mysql.connector.errors.ProgrammingError: 1054 (42S22): 'where 子句'中的未知列

一个函数 get_show_listing 查询 MysqL 数据库并根据传递的参数(或缺少)过滤集合。在对传递参数的情况进行单元测试时,会引发以下错误。我想了解导致此错误的原因;尤其是传递给函数的任何参数。

MysqL.connector.errors.ProgrammingError: 1054 (42S22): UnkNown column 'Action' in 'where clause'
def db_connect(func):
    def wrapper_db_connect(*args,**kwargs):
        with MysqL.connector.connect(**credentials) as db_connection:
            cursor = db_connection.cursor(dictionary=True)
            return func(cursor,*args,**kwargs)
    return wrapper_db_connect

@db_connect
def get_show_listing(cursor,genre=None):
    if not genre:
        cursor.execute("""
            SELECT t.title,t.view_rating,YEAR(t.release_date),t.score,t.Votes,g.name
            FROM tvshow AS t LEFT JOIN show_genre as s
            ON t.title = s.tvshow_title RIGHT JOIN genre as g
            ON s.genre_name = g.name ORDER BY Votes DESC LIMIT 5;
        """)
    else:
        cursor.execute(f"""
            SELECT t.title,g.name
            FROM tvshow AS t LEFT JOIN show_genre as s
            ON t.title = s.tvshow_title RIGHT JOIN genre as g
            ON s.genre_name = g.name WHERE g.name = {genre}
            ORDER BY Votes DESC LIMIT 5;
        """)
    return cursor.fetchall()
class TestShowListing(unittest.TestCase):


    @patch.dict('main.credentials',test_db_config)
    def test_db_query_show_listing_with_genre(self):
        shows = get_show_listing(genre="Action")
        self.assertTrue(all(
            shows[i]['Votes'] > shows[i + 1]['Votes'] and show[i]['Votes']
            for i in range(len(shows) - 1)
        ))
genre_table = """
    CREATE TABLE IF NOT EXISTS genre (
        name VARCHAR(20) PRIMARY KEY
    );
"""

show_table = """
    CREATE TABLE IF NOT EXISTS tvshow (
        title VARCHAR(20) NOT NULL,view_rating VARCHAR(8),release_date DATE,summary TEXT,score DECIMAL(2,1),Votes INT,PRIMARY KEY(title)
    );
"""

show_genre_table = """
    CREATE TABLE IF NOT EXISTS show_genre (
        id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,genre_name VARCHAR(20) NULL,tvshow_title VARCHAR(20) NOT NULL,FOREIGN KEY (genre_name) REFERENCES genre(name),FOREIGN KEY (tvshow_title) REFERENCES tvshow(title)
    );
"""

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?