1
我目前正试图将一个为MySQL数据库设计的程序转移到MS-SQL数据库上,并且遇到了一些麻烦。我发现默认情况下,MySQL没有区分大小写,因为MS-SQL具有区分大小写。这导致了与下面列出的代码类似的一些问题。为MS-SQL创建不区分大小写的SQLAlchemy查询
class Employee(Base):
__tablename__ = "Employees"
Id = Column(Integer(unsigned=True),
primary_key=True, nullable=False, unique=True)
DisplayName = Column(String(64),
nullable=False)
#more columns
def get_employees(sql_session, param, columns=None, partial_match=True):
if not columns:
columns = [Employee.Id, Employee.DisplayName]
clauses = []
if partial_match:
clauses.append(Employee.DisplayName.startswith(param))
whereclause = and_(*clauses)
stmt = select(columns, whereclause)
return sql_session.execute(stmt)
我知道SQL关键字COLLATE,但我不知道如何实现,或者如果它即使在这种情况下使用的最佳选择。你会用什么建议来创建一个不区分大小写的使用SQLAlchemy的LIKE查询?
- 的Python 2.7.7
- SQLAlchemy的0.7.7
感谢您的帮助,它完美地解决了MS-SQL的问题,但它确实造成了一个小问题。由于“未知整理”,添加整理功能会破坏与MySQL的兼容性。你有任何解决这两个问题的建议吗? – JBolton
恐怕整理字符串是特定于RDBMS的,所以您需要在MySQL中使用不同的内容 - 请参阅文档[here](https://dev.mysql.com/doc/refman/5.5/en/charset- charsets.html) –