@vladvaraks

Как подружить python 2.7, русские символы и pyodbc?

Пытаюсь отправить запрос в базу данных с помощью pyodbc и python 2.7, если в запросе не вводить русские буквы, то он отрабатывает, но если сделать условие с русскими символами то, в консоле мне выводит пустой список, думаю проблема в кодировке, но не могу понять как решить.

import pyodbc
import pandas as pd
import sys
from imp import reload
 
reload(sys)
sys.setdefaultencoding('utf-8')
driver = 'DRIVER={MySQL ODBC 3.51 Driver}'
server = 'SERVER=localhost'
port = 'PORT=3306'
db = 'DATABASE=oc12'
user = 'UID=root'
pw = 'PWD=1234'
conn_str = ';'.join([driver, server, port, db, user, pw])
conn = pyodbc.connect(conn_str)
cursor = conn.cursor()
 
b = cursor.execute("SELECT change_log.ParamProd, (SUM(CounterAfter)-SUM(CounterBefore)) AS Schet FROM selling LEFT JOIN (SELECT change_log.ShopKey, change_log.SeekKey, Max(change_log.Parameters) AS ParamProd, Max(change_log.DatetimeEnd) AS DTE FROM change_log WHERE change_log.GuideKey=592384 GROUP BY change_log.SeekKey, change_log.ShopKey)  AS change_log ON (selling.ShopKey = change_log.ShopKey) AND (selling.ResourceShopKey = change_log.SeekKey) WHERE date(TransactionDatetime)='2021-03-18' and change_log.ParamProd LIKE '%АИ-92%' GROUP BY change_log.ParamProd")
print(b.fetchall())
  • Вопрос задан
  • 554 просмотра
Решения вопроса 1
@vladvaraks Автор вопроса
Ответ банальный, вдруг кто то столкнется с такой глупой ошибкой код ниже

# -*- coding: utf-8 -*-
import pyodbc
import pandas as pd

driver = 'DRIVER={MySQL ODBC 3.51 Driver}'
server = 'SERVER=localhost'
port = 'PORT=3306'
db = 'DATABASE=oc12'
user = 'UID=root'
pw = 'PWD=1234'
conn_str = ';'.join([driver, server, port, db, user, pw])
conn = pyodbc.connect(conn_str)
cursor = conn.cursor()

b = cursor.execute(u"SELECT change_log.ParamProd, (SUM(CounterAfter)-SUM(CounterBefore)) AS Schet FROM selling LEFT JOIN (SELECT change_log.ShopKey, change_log.SeekKey, Max(change_log.Parameters) AS ParamProd, Max(change_log.DatetimeEnd) AS DTE FROM change_log WHERE change_log.GuideKey=592384 GROUP BY change_log.SeekKey, change_log.ShopKey) AS change_log ON (selling.ShopKey = change_log.ShopKey) AND (selling.ResourceShopKey = change_log.SeekKey) WHERE date(TransactionDatetime)='2021-03-18' and change_log.ParamProd LIKE '%АИ-92%' GROUP BY change_log.ParamProd")
print(b.fetchall() .encode('кодировка нужная'))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@rPman
добавь к conn_str еще это
CHARSET=UTF8
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы