[英]How do I get my for loop to replace these words in a T-SQL query in python?
我對Python還是很陌生,每天都在學習新事物,但是盡管遇到了簡單的問題,但我仍然遇到一些無法在線找到答案的問題。
我只是試圖遍歷一個循環,所以我不必重復相同的多個查詢,每個查詢只用一個不同的詞。
我試過設置一個名為
assets = ["AT", "AST", "PAC", "AC"]
我嘗試使用
for i in range(4)
for i in assets
和更多示例,但我不斷收到錯誤無效的列名“ i”
這很明顯為什么,因為它沒有像我希望的那樣經過數組或向量。
assets = ["AT", "AST", "PAC", "AC"]
i = 0
for i in assets:
q1 = """\
SELECT 'UnC' AS [i], SUM(CASE WHEN [i] IS NULL THEN 1 ELSE 0 END) AS [i
Count]
FROM SM.dbo.vSC SCL
JOIN IP.dbo.vSLUN(3) S
ON SCL.iSID=S.isID
JOIN SMa.dbo.S_C SC(noLock) ON S.isID=SC.iSID
WHERE SC.bIsInA IS NULL AND [i] IS NULL"""
df1 = pd.read_sql(q1, conn)
print(df1)
我想實現運行4個不同的查詢,並在每個查詢完成存儲到變量后更改名稱,最終我希望為每個查詢打印出結果。 任何幫助,將不勝感激,謝謝。
例如,編寫您的查詢,例如:
q1 = """\
SELECT *REPLACETHIS* FROM whatever;
然后說
for i in assets:
print(q1.replace("*REPLACETHIS*", i))
希望這可以幫助
在Python中,您不能以您嘗試的方式插入字符串,特別是將值直接嵌入到另一個字符串主體中,這在其他語言(PHP,Perl等)中可能是可行的。
通常在Python中,使用占位符和綁定值。 雖然在Python(> = 2.6)中有多種插值字符串的方法,但首選的通用方法是str.format
。 由於您需要設置相同的值格式,因此請全部放置在第一個序數位置{0}
:
for i in assets:
q1 = """SELECT 'UnC' AS [{0}], SUM(CASE WHEN [{0}] IS NULL THEN 1 ELSE 0 END) AS [{0} Count]
FROM SM.dbo.vSC SCL
JOIN IP.dbo.vSLUN(3) S
ON SCL.iSID = S.isID
JOIN SMa.dbo.S_C SC(noLock) ON S.isID = SC.iSID
WHERE SC.bIsInA IS NULL AND [{0}] IS NULL
"""
q1 = q1.format(i)
df1 = pd.read_sql(q1, conn)
assets = ["AT", "AST", "PAC", "AC"]
x = 0
for x in assets[0:4]:
q1 = """\
SELECT 'Unc' AS [x], SUM(CASE WHEN [x] IS NULL THEN 1 ELSE 0 END) AS [x
Count]
FROM SM.dbo.vSC SCL
JOIN IP.dbo.vSLUNode(3) S
ON SCL.iSID=S.isID
JOIN SM.dbo.S_C SC ON
S.isID=SC.iSID
WHERE SC.bIIA IS NULL AND [x] IS NULL"""
print(q1.replace("x", x))
assets = ["AT", "AST", "PAC", "AC"]
for i in assets[0:4]:
q1 = """\
SELECT 'Unc' AS [{0}], SUM(CASE WHEN [{0}] IS NULL THEN 1 ELSE 0 END) AS [{0} Count]
FROM SM.dbo.vSC SCL
JOIN IP.dbo.vSLUNode(3) S
ON SCL.iSID=S.isID
JOIN SM.dbo.S_C SC ON
S.isID=SC.iSID
WHERE SC.bIIA IS NULL AND [{0}] IS NULL"""
q1 = q1.format(i)
df1 = pd.read_sql(q1, conn)
print(df1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.