我正在使用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:无法修改数据库的列类型。这是一个非常有利的案例,而不是常态。
答案 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库。