python - 使用 sqlalchemy 进行区分大小写的查询

标签 python mysql sqlalchemy

我需要使用 sqlalchemy 对 mysql 数据库进行一些区分大小写的查询 如何使用 sqlalchemy 使查询区分大小写。 提前致谢。

最佳答案

您需要指定列上的排序规则区分大小写。
SQLAlchemy 对 MySQL 方言的支持 allows several column-types to accept a collation kwarg .
下面是创建表时如何指定列排序规则的示例。

import sqlalchemy as sa
sa.__version__
# -> '0.7.7'
engine = sa.create_engine('mysql+mysqldb://uname:pword@localhost/your_db', 
                          pool_recycle=3600)
metadata = sa.MetaData()
some_table = sa.Table('some_table', metadata,
    sa.Column('id', sa.Integer, primary_key=True),
    sa.Column('some_column', 
              # specify case-sensitive collation
              sa.dialects.mysql.VARCHAR(100, collation='utf8_bin')), 
)
metadata.create_all(engine)
conn = engine.connect()
conn.execute('''INSERT INTO some_table (some_column) 
                VALUES (%s);''', ('foo',))
conn.execute('''INSERT INTO some_table (some_column) 
                VALUES (%s);''', ('FOO',))
conn.execute('SELECT * FROM some_table;').fetchall()
# -> [(1L, 'foo'), (2L, 'FOO')]
conn.execute('''SELECT * 
                FROM some_table 
                WHERE some_column LIKE %s;''', ('foo%',)).fetchall()
# -> [(1L, 'foo')]
conn.execute('''SELECT * 
                FROM some_table 
                WHERE some_column LIKE %s;''', ('FOO%',)).fetchall()
# -> [(2L, 'FOO')]

关于python - 使用 sqlalchemy 进行区分大小写的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11065899/

相关文章:

python - SQLAlchemy Harvesine 大圆计算错误

python - OpenCV 图像处理以在 Python 中裁剪图像的倾斜部分

python - 在Python中读取具有不同列数的文本文件

php - 数据未注册到数据库

python - 属性错误: 'Engine' object has no attribute 'conn'

python - 无法捕获 Flask 应用程序中的 _mysql_exceptions.OperationalError

python - python 服务器进程的性能监控/分析(类似于 New Relic)

python - 如何从内存中卸载 keras/tensorflow 模型?

.net - MySql .net 连接器成员资格提供程序默认 MinRequiredNonAlphanumericCharacters

MySQL 查询左连接搞乱了事情