Python 博士后不';分类不当
这是我的flask.SQLAlchemy查询:Python 博士后不';分类不当,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,这是我的flask.SQLAlchemy查询: available_subservices = ( ServicesForOffer.query .filter_by(type=u'Дополнительная') .order_by(ServicesForOffer.name) .all() ) 所以我把它打印出来: for subs in available_subservices: print subs.name 我看到的是: Доп.створ
available_subservices = (
ServicesForOffer.query
.filter_by(type=u'Дополнительная')
.order_by(ServicesForOffer.name)
.all()
)
所以我把它打印出来:
for subs in available_subservices:
print subs.name
我看到的是:
Доп.створка
Окно с двойными рамами (2 створки)
Окно с двойными рамами (3 створки)
окно с балконной дверью
Эркер
Мойка окон
Мойка окон, уборка кухни, уборка ванной и сан.узла
мытье холодильника
балкон
глажка
дорога
Разбор шкафа/антресоли/гардеробной
Мелкая бытовая техника
Жалюзи вертикальные
духовка
我不希望任何人知道西里尔字母的顺序,但你仍然可以看到大写字母分散在各处,和和之间并不接近。可能是Python2和Unicode的问题
另外,当我按servicesoffer.name.desc()
排序时,同样的奇怪顺序被复制,当然是颠倒的。因此,显然有一些Postgres知道而我不知道的东西。您可能没有正确设置字符串的排序方式:
排序规则功能允许指定每列(甚至每项操作)数据的排序顺序和字符分类行为。这减轻了创建数据库后不能更改数据库的LC_COLLATE和LC_CTYPE设置的限制
您可以通过简单地运行查询来尝试:
schema=> SELECT 'дорога' > 'духовка' COLLATE "en_US";
?column?
----------
f
(1 row)
或者在PostgreSQL shell中手动执行查询,方法是:
SELECT ...
FROM ...
WHERE ...
ORDER BY name COLLATE "your collation"
如果这对您有效,您可以:
我遇到了MySQL排序的类似问题。解决办法是:
- 将模式的
默认字符集设置为“utf-8”(默认为拉丁语-1),并
- 要将模式的
DEFAULT COLLATE
设置为“utf8\u unicode\u ci”
另一种方法是在数据库中创建正确的模式
ALTER [ COLUMN ] column [ SET DATA ] TYPE data_type [ COLLATE collation ]
[ USING expression ]