Я новичок в SqlAlchemy и Firebird DB.
Я могу напрямую создать таблицу, используя DBeaver:
CREATE TABLE NEWTABLE (
COLUMN1 FLOAT,
COLUMN2 FLOAT
);
, но если я пытаюсь сделать то же самое, используя pyndas + sqlalchemy, я получаю ошибка:
import sqlalchemy as sa
import pandas as pd
engine = sa.create_engine(r'firebird+fdb://user:pwd@localhost:3050/c:\XXX.FDB', echo=False)
df = pd.DataFrame({"COLUMN1":[], "COLUMN2":[]})
df.to_sql(name="NEWTABLE", con=engine, if_exists = 'replace', index=False, method=None)
DatabaseError: (fdb.fbcore.DatabaseError) ('Error while preparing SQL statement:\n- SQLCODE: -817\n- Dynamic SQL Error\n- SQL error code = -817\n- Metadata update statement is not allowed by the current database SQL dialect 1', -817, 335544569)
[SQL:
CREATE TABLE "NEWTABLE" (
COLUMN1 FLOAT,
COLUMN2 FLOAT
)
Проблема связана с кавычками "..."
в to_sql
запросе.
- Как узнать sqlalchemy не использовать кавычки для совместимости с Firebird (диалект 1)?
как альтернатива:
Вместо того, чтобы выполнить запрос немедленно, возможно ли создать строку запроса только из
to_sql
и выполнить ее позже с
result = engine.execute(query)
? Это дало бы возможность исправить эти несовместимости перед выполнением.