当前位置: 首页 > 知识库问答 >
问题:

如何删除引号

施靖
2023-03-14

我对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
)

问题是由引号“…”引起的 到sql查询中。

  1. 如何告诉sqlalchemy不要使用引号来兼容Firebird(方言1)

作为替代方案:


共有2个答案

易宏阔
2023-03-14

如果已创建模型:

from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.ext.declarative import declarative_base

base = declarative_base()

class Base(base):
    __abstract__ = True
    __table_args__ = {'quote':False}
    

db = SQLAlchemy(model_class=Base)


class Newtable(Base):
    __tablename__ = 'NEWTABLE '
    column1 = db.Column('COLUMN1', db.Float, quote=False)
    column2 = db.Column('COLUMN2', db.Float, quote=False)
赵景曜
2023-03-14

我找到了一个可能的解决方案,上面写着用SQLalChemy for PostgreSQL去掉双引号:如果表名是大写的,它会自动被引号包围。

从实验上讲,我发现这同样适用于火鸟,即使我没有找到任何关于这个问题的适当参考,但只找到了一些明显不相关的东西

改为

df.to_sql(name="newtable", ...)

解决了这个问题。

 类似资料:
  • 如何删除每个索引,我有一个参数和删除按钮,我试图将我的参数放在我的删除按钮中,但它不起作用如何解决这个问题? 超文本标记语言

  • 我有一个字符串: "16680,16678,16677,16676,16675,16672" 这是我在调用存储过程传递的参数时得到的。我想把这些记录插在哪里 其中 (16680,16678,16677,16676,16675,16672)。 如何在 Sybase ASE 存储过程中执行此操作?

  • 问题内容: 我每天创建索引来存储搜索历史,并且我将这些索引用于应用程序中的建议,这也有助于我根据历史建议。 现在我只需要维持过去的10天历史。那么elasticsearch中是否有任何功能可以让我定期创建和删除索引? 问题答案: 我唯一能想到的就是使用数据数学:https : //www.elastic.co/guide/en/elasticsearch/reference/current/dat

  • 输出为 预期输出

  • 是否可以从nashorn引擎中隐藏或删除java api?所以它只能看到或使用“默认”ECMAScript 262版本5.1,以及一些特别公开的函数/变量? 我想让我的最终用户为自己创建一些特定的逻辑,而不用担心他们会入侵整个系统。当然,nashorn引擎中可能存在一些安全漏洞等,但这是不同的主题。 编辑:很抱歉,我忘了提到我正在java应用程序中运行nashorn,所以不能使用命令行参数。

  • 问题内容: 是否可以从nashorn引擎隐藏或删除java api?这样它只能看到或使用带有某些特别暴露的函数/变量的“默认” ECMAScript 262 Edition 5.1? 我想让我的最终用户为自己创建一些特定的逻辑,而不必担心他们会破坏整个系统。当然,nashorn引擎等中可能存在一些安全漏洞,但这是不同的话题。 编辑:对不起,我忘了提及我在Java应用程序中运行nashorn,因此无