在下面有这个虚拟代码。我几乎要做的是创建一个表格,其中包含 Excel 表中特定的一个或多个部门中的所有客户及其 ID。在 Excel 单元格中,可以列出一个或多个。如果有多个分部,下面的代码有效,但是如果只有一个分部,则代码不起作用,因为我正在创建一个元组,并且 where 子句本质上变得类似于 where Division_id in (92,) ,它运行 SQL 错误。我该如何编写此代码,以便它既可以处理多个分区,也可以只处理单个分区。
where Division_id in (92,)
代码:
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'
Division_tuple = tuple(map(int, Division.split(","))) AttributeError: 'numpy.int64' object has no attribute 'split'
我还附上了一张图像,显示细胞在一次分裂后的样子,如果有多个,它会是一样的,但像“92,100,203”等。
实施该更改后,我没有收到 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 之后有尾随逗号。
“where Division_id in (92,)”