使用sqlAlchemy将unicode插入到字符串中

时间:2015-11-12 06:27:04

标签: python postgresql utf-8 sqlalchemy unicode-string

我正在使用sqlAlchemy与postgres数据库进行交互。它全部设置为插入字符串数据。我收到的数据通常是utf-8,设置工作得很好。最近,数据以somedata\xtrailingdata

的格式出现

SQLAlchemy尝试使用somedata完全剥离\x之后的所有内容。

请告诉我是否有办法指示SQLAlchemy尝试插入整个内容而不是删除unicode部分。

我试过了 create_engine(dbUri, convert_unicode=True, client_encoding='utf8')

create_engine(dbUri, convert_unicode=False, client_encoding='utf8')

create_engine(dbUri, convert_unicode=False)

到目前为止还没有成功。我非常感谢您将此数据插入字符串列中的输入。

PS:无法修改数据库的列类型。这是一个非常有利的案例,而不是常态。

2 个答案:

答案 0 :(得分:0)

没有关于它的Unicode。 \x是字节文字前缀,需要遵循十六进制值。 PostgreSQL也支持\x语法,因此PostgreSQL可能会删除它。

在递交给SQLAlchemy之前,请考虑转义public class ServiceABImpl implements ServiceAB { @Autowired private ScheduledExecutorService scheduledExecutorService; @Transactional public void methodA() { //do some work in a transaction. someDao.methodDao(); //schedule a methodB scheduleMethodB(); } public void scheduleMethodB() { scheduledExecutorService.schedule(() -> { this.methodB(); return ""; }, 2, TimeUnit.SECONDS); } @Transactional public void methodB() { } } 上的所有斜杠或find-replace

答案 1 :(得分:0)

问题原来是\x00。向SQLAlchemy传递一个\x00的值时,会将其截断为\x00之前的数据。我们将问题追溯到SQLAlchemy下面的C库。