#python #sql-server #pandas #sqlalchemy
#python #sql-сервер #pandas #sqlalchemy
Вопрос:
Я использую следующий код.
import sqlalchemy as sq
from sqlalchemy import create_engine
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
server = 'ourServer'
database = 'ourdatabase'
driver = 'SQL Server'
username = 'username'
password = 'password'
database_connection= f'mssql://{username}:{password}@{server}/{database}?driver={driver}'
engine = sq.create_engine(database_connection)
connection = engine.connect()
account_id = '111111111'
x= pd.read_sql_query("select * from tablename where AccountID =?, account_id" , connection)
Когда я запускаю приведенный выше код, он выдает эту ошибку.
Ошибка DBAPIError: (pyodbc.Error) (‘07002’, ‘[07002] [ Microsoft][Драйвер ODBC SQL Server] Неверное поле подсчета или синтаксическая ошибка (0) (SQLExecDirectW)’)
Как передать параметр для условия запроса SQL?
Комментарии:
1. Похоже, это описано в документации read_sql_query . Вы пробовали:
x= pd.read_sql_query("select * from tablename where AccountID =?" , connection, params=(account_id) )
?2. @AlwaysLearning — Отсутствует запятая, чтобы сделать его кортежем?
params=(account_id,)
3. Большое вам спасибо @GordThompson. Он работает с кортежем.
4. Также спасибо @AlwaysLearning за быстрый ответ.