我决定用python学习一些关于数据库的知识(在我使用flask和sqlalchemy之前),问题是我想更新数据库的一个元素,用flask和sqlalchemy很简单,你只是更新了一个类并做了提交但显然没有烧瓶更复杂(我不确定)使用了一个函数update()
,总之我想知道如何使用该函数update()
来编辑元素,我把我的代码留给你
def AddProduc():
producto = Producto()
print ("\t\t .: Agregar Producto :. ")
producto.product_id = raw_input("\t ID del producto ( codigo de barras ): ")
Exist_Product = session.query( Producto ).filter_by( product_id = producto.product_id ).first()
# AGREGAR O ACTUALIZAR
if Exist_Product == None:
producto.nombre = raw_input("\t Nombre del producto: ")
producto.precio = input("\t Precio del producto: ")
producto.cantidad = input("\t Cuantos productos va a agregar: ")
session.add( producto )
session.commit()
else:
Cantidad_Nuevo = input("\t Cuantos productos va a sumar: ")
Cantidad_Nuevo = Cantidad_Nuevo + Exist_Product.cantidad
# Lo que esta adentro de update() es el nombre de la tabla no la clase
session.update( producto ).values( cantidad = Cantidad_Nuevo ).where()
该表声明如下:
class Producto( db ):
__tablename__ = "producto"
product_id = Column( Integer(),primary_key = True )
precio = Column( Integer())
cantidad = Column( Integer())
nombre = Column( String(50))
提前感谢<3
您有几种方法来更新字段,例如:
直接修改对象的属性:
sqlalchemy.orm.query.Query.update
sqlalchemy.sql.expression.update
/sqlalchemy.schema.Table.update
:根据问题中的代码并使用 sqlite3 完成可重现的示例:
一些小观察:
判断一个对象是否
None
是的正确方法是使用运算符is
,而不是相等运算符:作为一般规则,不要
input
用于 Python 2 中的用户输入,它不用于输入数值。使用raw_input
和显式转换为int
.尽可能遵循 PEP 8 中定义的样式约定是个好主意。变量、方法和函数的名称必须小写并用于
_
分隔单词。为类保留 CamelCase,为“常量”保留全部大写。