Buf*_*ley 13 python sqlalchemy
我在编写SQLAlchemy Core中应该是一个简单的SQL更新语句时遇到了困难.但是,我找不到任何文档,示例或教程,说明如何组合多个where条件.我确定它在那里 - 只是找不到它.
这是表格:
self.struct = Table('struct',
metadata,
Column('schema_name', String(40), nullable=False,
primary_key=True),
Column('struct_name', String(40), nullable=False,
primary_key=True),
Column('field_type', String(10), nullable=True),
Column('field_len', Integer, nullable=True) )
Run Code Online (Sandbox Code Playgroud)
这是插入和更新声明:
def struct_put(self, **kv):
try:
i = self.struct.insert()
result = i.execute(**kv)
except exc.IntegrityError: # row already exists - update it:
u = self.struct.update().\
where((self.struct.c.struct_name==kv['struct_name']
and self.struct.c.schema_name==kv['schema_name'])).\
values(field_len=kv['field_len'],
field_type=kv['field_type'])
result = u.execute()
Run Code Online (Sandbox Code Playgroud)
代码处理插入正常,但更新表中的所有行.你能帮我理解这个where子句的语法吗?欢迎所有建议 - 提前感谢.
编辑:更正的条款如下所示:
where((and_(self.struct.c.parent_struct_name==kv['parent_struct_name'],
self.struct.c.struct_name==kv['struct_name'],
self.struct.c.schema_name==kv['schema_name']))).\
Run Code Online (Sandbox Code Playgroud)
这是一个非常简单的语法,但考虑到SQLAlchemy的许多层,很难确定在此上下文中确切应用了什么.
Kou*_*Das 17
您还可以使用& python 运算符。
例如:
query.where(
(ModelName.c.column_name == "column_value") &
(ModelName.c.column_name == "column_value)
)
Run Code Online (Sandbox Code Playgroud)
例如,如果您有这样的查询
user_query = User.select().where(
(User.c.id == 12) &
(User.c.email == "myemail@gmail.com")
)
Run Code Online (Sandbox Code Playgroud)
这将生成一个像这样的原始 SQL
select * from users where id = 12 and email = "myemail@gmail.com"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8608 次 |
| 最近记录: |