【发布时间】:2021-02-08 20:56:05
【问题描述】:
我使用创建临时表(sqlalchemy 和 pandas)的框架。
但是,它创建了一个用引号括起来的表,在我的例子中,我使用的是 Sybase,它返回一个权限错误。
当我手动创建时,没有引号的效果很好。
为了解决这个问题,我把 \b 放在字符串的开头:
table_name=f'\b{table_name}'
当我使用 \b 进行测试时,它会删除左引号,但我找不到删除右引号的方法。
Obs:我已经测试过 table_name=f'\b{table_name}' + \u'\u007f'
例如:
table_name="#test"
df.to_sql(con=engine,name=table_name,index=False)
生成以下创建:
CREATE TABLE "#test" (nome TEXT NULL)
我遇到了错误,因为引号。
但是,使用此代码,我可以删除左引号:
table_name="\b#test"
df.to_sql(con=engine,name=table_name,index=False)
它生成:
CREATE TABLE #test" (nome TEXT NULL)
谢谢
【问题讨论】:
-
如果你有表格字符串,为什么不直接做
table_name[1:-1]呢?这会从字符串中删除第一个和最后一个字符(假设它的 >1 个字符长) -
\b将使左引号出现在呈现到终端时被删除。这并不意味着它真的消失了;引号 和 退格键都在您的数据中,并且可能会要求您的数据库服务器创建一个名称中包含两个字符的表。 -
我的问题是pandas函数to_sql,因为当我将表名作为参数传递时,它会自动在表名周围添加引号
-
请用您收到的完整错误消息更新问题;如果您遇到“权限错误”或语法错误(即双引号的存在),我不清楚(对我来说)
-
还有,哪个 Sybase RDBMS 产品(ASE?IQ?SQLAnywhere?Advantage?)和版本?
标签: python pandas sqlalchemy sybase