簡體   English   中英

如何在 Python 中的 SQL 連接中替換字符串

[英]how to substitute string in SQL connection in Python

我有一個變量(交換),我循環遍歷代碼中的值以更改每個交換的 output 文件的路徑。 當我也嘗試在 SQL 塊中使用此字符串替換時,它不明白。 有人可以提出什么問題嗎? 這是我得到的錯誤

pandas.io.sql.DatabaseError: Execution failed on sql '
    f'SELECT [Ticker], [Date], [Open], [High], [Low], [Close], [Volume] FROM olaptraderv3.dbo.{ex} order by Ticker'
    ': ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Could not find stored procedure 'f'. (2812) (SQLExecDirectW)")

這是代碼的相關部分:

import pandas as pd

pd.options.mode.chained_assignment = None  # default='warn'
import pyodbc
import talib
import os
from talib import  (AD,ADOSC,WILLR)

exchanges = ["BATS","US","V"]

for ex in exchanges:
path = f'H:\\EOD_DATA_RECENT\\INDICATORS\\FROM-SQL-SOURCE\\{ex}\\'

DB_READ = {'servername': 'XYZ\XYZ',
  'database': 'olaptraderv3'}

conn = pyodbc.connect('DRIVER={SQL Server};SERVER=' + DB_READ['servername'] + ';DATABASE=' +  DB_READ['database'] + ';Trusted_Connection=yes')

sql = """
f'SELECT [Ticker], [Date], [Open], [High], [Low], [Close], [Volume] FROM olaptraderv3.dbo.{ex} order by Ticker'
"""
df = pd.read_sql(sql, conn)

您需要在字符串之外使用格式“f”。

sql = f"""
'SELECT [Ticker], [Date], [Open], [High], [Low], [Close], [Volume] FROM olaptraderv3.dbo.{ex} order by Ticker'
"""

我強烈反對使用 SQL 進行字符串格式化/替換,因為它沒有經過清理並且可能被濫用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM