我想创建一个数据框,该数据框从不断更新的另一个表中读取数据,并仅选择包含与用户输入的产品代码相同的产品代码的行
我已经尝试过
pd.read_sql_query
创建数据框
这是我尝试过的代码,将其视为sqlalchemy语法,但我不知道为什么
product = pd.read_sql_query("SELECT * FROM StoringTF WHERE Product_Code = ?",(Val), c)
其中Val是一个单项元组,用于存储用户输入的产品代码的值,而StoringTF是我要从中提取数据的主表。
我希望您对我想做的事情有所了解,因为语法有问题,并且使python期望它是sqlalchemy。 谢谢,希望能为您提供帮助。
答案 0 :(得分:1)
使用pyformat,您可以这样编写
>>> x
[1, 2, 3]
>>> next((x for x in x if x > 20), 0) # if no number > 20 is found, return 0
0
按照某些答案中的建议在python中格式化字符串,这为SQL注入或变量中某些特殊字符引起的错误提供了机会。
答案 1 :(得分:0)
您可以:
product = pd.read_sql_query("SELECT * FROM StoringTF WHERE Product_Code = %s" % str(your_variable), c)
答案 2 :(得分:0)
您可以尝试
product = pd.read_sql_query("SELECT * FROM StoringTF WHERE Product_Code = {}".format(Val), c)
答案 3 :(得分:0)
您的原始代码有一个错误,即(Val)
不是1元素元组。
您可以查看How to create a tuple with only one element和Python documentation了解更多详细信息。
您的原始代码应该可以加上一个逗号,即:
product = pd.read_sql_query("SELECT * FROM StoringTF WHERE Product_Code = ?",(Val,), c)
答案 4 :(得分:-1)
如果您使用的是python 3.6或更高版本,那么最有效的字符串处理方法就是“ f-strings”,它比其他方法都快得多:
product = pd.read_sql_query(f"SELECT * FROM StoringTF WHERE Product_Code = {Val}", c)