Я подключаюсь к базе данных SQL Server с помощью SQLAlchemy (с драйвером pymssql
).
import sqlalchemy
conn_string = f'mssql+pymssql://{uid}:{pwd}@{instance}/?database={db};charset=utf8'
sql = 'SELECT * FROM FAKETABLE;'
engine = sqlalchemy.create_engine(conn_string)
connection = engine.connect()
result = connection.execute(sql)
result.cursor.description
что приводит к:
(('col_1', 1, None, None, None, None, None),
('col_2', 1, None, None, None, None, None),
('col_3', 4, None, None, None, None, None),
('col_4', 3, None, None, None, None, None),
('col_5', 3, None, None, None, None, None))
Согласно PEP 249 (атрибут курсора .description
):
Первые два элемента (name и type_code) являются обязательными, остальные пять являются необязательными и имеют значение None, если не могут быть предоставлены значимые значения.
Я предполагаю, что целые числа (1, 1, 4, 3, 3)
являются типами столбцов.
Мои два вопроса:
- Как сопоставить эти целые числа с типами данных (например, char, integer и т. д.)?
- Это типы данных SQL? Если нет, можно ли получить типы данных SQL?
FWIW, я получаю тот же результат при использовании raw_connection()
< /a> вместо connect()
.
Наткнулся на три подобных вопроса (которые не отвечают на этот конкретный вопрос). Мне нужно использовать подход connect()
+ execute()
.