如何在SQLite查询python中使用f字符串发送参数

c86crjj0  于 2023-02-16  发布在  SQLite
关注(0)|答案(1)|浏览(141)

我如何向查询发送参数这是我的代码

import pandas as pd
import sqlite3

def query_brand(filter):
    sql_query = pd.read_sql(f'SELECT * FROM ps_lss_brands WHERE label = {filter}', 
    self.conn_brand)
    df = pd.DataFrame(sql_query, columns = ['id_brand', 'label'])
    # print(df["id_brand"][0])
    print(df)
query_brand("ACURA")

这是我得到的错误:
pandas.errors.DatabaseError:对SQL "SELECT * FROM ps_lss_brands WHERE标签= ACURA"执行失败:无此列:阿库拉
我的列是标签列,但在查询中它尝试查找ACURA列

8dtrkrch

8dtrkrch1#

第四行中存在问题。请更改SQL查询以在{filter}两边包含引号
具体来说,第四行应该是这样的:

sql_query = pd.read_sql(f"SELECT * FROM ps_lss_brands WHERE label = '{filter}'", 
 self.conn_brand)

但是,您应该尝试完全避免这种情况,而是使用参数化查询。这将防止SQL注入。

相关问题