#python #sql #sql-server #pandas #sqlalchemy
Вопрос:
Попробуйте записать фрейм данных в БД, но получите сообщение об ошибке ниже.
Создать Фрейм данных
import pandas as pd
d = {'col1': [1, 2], 'col2': ['VIP', 'Eco']}
df = pd.DataFrame(data=d)
Подключение к SQL Server в Azure
from sqlalchemy import create_engine
engine = create_engine
('mssql pyodbc://user:pass@dns:1433/database')
Попробуйте вставить данные в БД
from sqlalchemy.sql import table, column, select, update, insert
from sqlalchemy.types import Integer, Text, String, DateTime
df.to_sql(
'Table_Test',
engine,
if_exists='append',
index=False,
chunksize=100,
dtype = {
"ID" : Integer,
"Type" : String(10)}
)
Ошибка
ValueError: ID (<class 'sqlalchemy.sql.sqltypes.Integer'>) not a string
Версия для Панд: «1.1.5»
полная ошибка
try:...
Traceback (most recent call last):
File "<ipython-input-19-993c20acc8ac>", line 2, in <module>
df.to_sql(
File "C:anaconda3libsite-packagespandascoregeneric.py", line 2605, in to_sql
sql.to_sql(
File "C:anaconda3libsite-packagespandasiosql.py", line 589, in to_sql
pandas_sql.to_sql(
File "C:anaconda3libsite-packagespandasiosql.py", line 1816, in to_sql
raise ValueError(f"{col} ({my_type}) not a string")
ValueError: ID (<class 'sqlalchemy.sql.sqltypes.Integer'>) not a string
Спасибо
Комментарии:
1. @SuperShoot, пожалуйста, была добавлена полная трассировка ошибок. Спасибо
2.
engine = create_engine ('mssql pyodbc://user:pass@dns:1433/database')
Действительно ли в вашем коде более 2 строк?3. Если это так, я бы сказал, что это ваша проблема, так как это будет назначено
engine = create_engine
, и поэтому, когда pandas проверяет, что данное соединение является подключаемым к sqlalchemy, он выходит из строя и используетSQLiteDatabase
объект, который предполагает, чтоdtype
arg toto_sql()
-это дикт строковых значений.4. Вы пробовали
"ID" : Integer()
вместо"ID" : Integer
этого ?5. @AlwaysLearning, все еще получаю ошибку