Ошибка чтения sqlalchemy возвращает недопустимое имя, поскольку оно содержит символ NULL или недопустимый символ Unicode - PullRequest
0 голосов
/ 15 ноября 2018

Я использую sqlalchemy для чтения запроса.Мой код следующий:

def conection(file_name, server, database, uid, pwd):
    cnxn = create_engine("mssql+pyodbc:///?odbc_connect={}".format(urllib.parse.quote_plus("DRIVER=SQL SERVER;\
                            SERVER={0};PORT=1433;DATABASE={1};UID={2};PWD={3};TDS_Version=8.0;".format(server, database, uid, pwd))))
    pd.read_sql(query, cnxn, chunksize=100)

parser = argparse.ArgumentParser(description='Connect to the ODBC and extract the tables')
parser.add_argument('-table', type=str)
args = parser.parse_args()

sql_path = os.path.join('..', 'SQL')
filename_base = args.table
sql_filename = os.path.join(sql_path, filename_base)

with open(os.path.join('..', '..', '..', 'configuration', 'connnection.json')) as f:
    data = json.load(f)

query = obtain_query(sql_filename)
cnxn = conection(filename_base,
                        data[filename_base]['server'],
                        data[filename_base]['database'],
                        data[filename_base]['uid'],
                        data[filename_base]['pwd'])

Однако я получаю следующую ошибку:

sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'L'. (102) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]'.C.u.s.t.o.m.e.r.C.o.d.e.' is an invalid name because it contains a NULL character or an invalid unicode character. (1055)")

Вот пример моей таблицы:

enter image description here

Как видите, у меня нет нулевых значений или недопустимых символов, так как это просто цифры в виде текста.Я уже проверил, и нет нулевых значений или символов Юникода.

Используемый мной запрос является просто базовым выбором:

SELECT
     [Customer]
    ,[Account]
    ,[Country]
    ,[Metric1]
    ,[Metric2]
    ,[Metric3]
    ,[Metric4]
FROM 
    [Table1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...