[英]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.