sql - python 语法错误制作视图和选择数据

分享于2022年07月17日 python sql 问答
【问题标题】:sql - python 语法错误制作视图和选择数据(sql - python syntax error making view and selecting data)
【发布时间】:2022-07-14 23:10:36
【问题描述】:

您好,希望您玩得愉快,我正在使用 python 和 SQL 制作应用程序,但在 SQL 中遇到语法错误,您能帮忙吗?

self.mycursor.execute(f'''CREATE VIEW [usable products] AS
            SELECT * FROM products
            WHERE {str(self.counts.value())}> (SELECT count FROM products)
            ''')

错误是:

ight syntax to use near '[usable products] AS
            SELECT * FROM products
            WHER' at line 1

version for the right syntax to use near '[usable products] AS
            SELECT * FROM products
            WHER' at line 1

谢谢!

  • 请标记您正在使用的RDBMS,它的SQL方言不同。

【解决方案1】:

考虑参数化您的查询并避免 F 字符串插值。此外,如果 count (不会误认为 COUNT() 聚合)是 products 表中的列,则不需要子查询。

下面假设您使用 pyodbc sqlite3 ,它们使用qmarks, ? ,作为参数占位符。如果使用其他 DB-API( psycopg2 pymysql 等),请使用 %s 占位符。

sql = (
    "CREATE VIEW [usable products] AS "
    "   SELECT * FROM products "
    "   WHERE count < ?"
)

self.mycursor.execute(sql, [self.counts.value()])