admin

SQL Python,处理 Where 语句中的一个或多个值

sql

在下面有这个虚拟代码。我几乎要做的是创建一个表格,其中包含 Excel 表中特定的一个或多个部门中的所有客户及其 ID。在 Excel 单元格中,可以列出一个或多个。如果有多个分部,下面的代码有效,但是如果只有一个分部,则代码不起作用,因为我正在创建一个元组,并且 where 子句本质上变得类似于 where Division_id in (92,) ,它运行 SQL 错误。我该如何编写此代码,以便它既可以处理多个分区,也可以只处理单个分区。

代码:

filename = 'test.csv'
division = test.iloc[0][4]
division_tuple = tuple(map(int, division.split(",")))


sql = cs.execute("""
INSERT INTO sample_table_name
select c.customer_id,
c.customer_name
from(
t.customer_id
t.customer_name


from customer_table t

where division_id in {}
group by 1,2) c ;
""".format(division_tuple))

如果 Excel 表只有一个列出的部门,我会收到以下错误:

代码错误:

回溯(最近一次调用): Division_tuple = tuple(map(int, Division.split(","))) AttributeError: 'numpy.int64' object has no attribute 'split'

我还附上了一张图像,显示细胞在一次分裂后的样子,如果有多个,它会是一样的,但像“92,100,203”等。


阅读 193

收藏
2021-06-07

共1个答案

admin

实施该更改后,我没有收到 Numpy 错误,而是格式错误。所以做了下面的改动

filename = 'test.csv'
division = test.iloc[0][4]
division_tuple = tuple(map(int, str(division).split(",")))


sql = cs.execute("""
INSERT INTO sample_table_name
select c.customer_id,
c.customer_name
from(
t.customer_id
t.customer_name


from customer_table t

where division_id in (%s) --changed format here 
group by 1,2) c ;
""",(division_tuple)) #and here 

虽然这在技术上会使 where 子句在只有一个值时看起来像“where Division_id in (92,)”,但这仍然是运行它的正确方法,尽管在 92 之后有尾随逗号。

2021-06-07