uso de matraz-sqlchemy

Se utilizó Flask-sqlalchemy en el proyecto. Resumamos el uso aquí para evitar olvidar más tarde y tener que verificar la información en inglés.
1. La primera etapa del uso de sqlalchemy:
primero diga a sqlalchemy la estructura de la tabla a modo de clase, de la siguiente manera:

class AlarmStatistical(db.Model):
    __bind_key__ = 'xnet_master'
    __tablename__ = 'dashboard_alarm_statistical'

    id = db.Column(db.Integer, primary_key=True)
    source = db.Column(db.String(255), index=True)
    pod = db.Column(db.String(255), index=True)
    start_time = db.Column(db.DateTime, index=True)
    count = db.Column(db.Integer)

    def __init__(self, source, pod, start_time, count):
        self.source = source
        self.pod = pod
        self.start_time = start_time
        self.count = count

    def alter(self):
        self.count += 1

bind_key , NombreTabla es el matraz en una variable de entorno que representan los nombres de las tablas de ruta y bases de datos
Nota: primary_key puntos tienen que tener
y se puede escribir una función en esta clase, cuando se utiliza para llamar a estas funciones directamente con los datos en la base de datos
por lo ponemos la tabla completa, vistazo a algunas de las siguientes operaciones
2, seleccione la operación
usando el método básico sqlalchemy filtro de selección se lleva a cabo y filter_by
diferencia es, filter_by se puede utilizar en algunas expresiones complejas

f = AlarmStatistical.query.filter(AlarmStatistical.id == id).all()

.all () devuelve todos los datos calificados, hay otras maneras
.First () devuelve los primeros datos
.Limite (n) de retorno n de datos
, así como añadir sobre métodos de ordenación, el sitio web oficial para encontrar API específica

También se puede usar así:

data = AlarmStatistical.query.filter(AlarmStatistical.id == id)
data = data.filter(AlarmStatistical.pod == pod).all()
#可以模糊查询、或者其他条件查询
#模糊查询:
query.filter(User.email.endswith('@example.com')).all()

Si tiene múltiples condiciones inciertas, puede usar esto

p0=[AlarmStatistical.id==id,]
p1=[AlarmStatistical.pod == pod]
data = AlarmStatistical.query.filter(and_(p0),and_(p1))
#或者这样
p = [AlarmStatistical.id==id, AlarmStatistical.pod == pod]
data = AlarmStatistical.query.filter(and_(p))

3. Insertar datos

p = AlarmStatistical(......) #调用class中的__init__()函数
db.session.add(p)
db.session.commit()

4, el uso de la instrucción SQL nativa
gran cantidad de consultas complejas, inconveniente implementado objeto sqlalchemy, puede utilizar la instrucción SQL nativo directamente, sino que tienen que prestar atención a algunos ataques SQL, tales como ataques de inyección SQL

db.engine.execute(sql)

5. Eliminar datos

p = AlarmStatistical()
db.session.delete(p)
db.session.commit()

6, los datos de actualización
para actualizar los datos, primero debe cubrir consulta a los datos, a continuación, la actualización

u=AlarmStatistical.query.first()
u.id=123  
#更新数据和变量赋值那么简单,但必须是通过查询返回的对象。
db.session.commit()

En este momento, puede usar los métodos de la clase, como:

u=AlarmStatistical.query.first()
u.alter()  
db.session.commit()

7. Usar funciones en sql

#这个查询,会比较复杂,在现实使用中,完全可以使用原生的sql语句
data = (db.session.query(db.func.date_format(AlarmMessage.alarm_time, '%Y-%m-%d %H:%i').label('alarm_time'), AlarmMessage.alarm_source, AlarmMessage.pod,db.func.count('*').label('alarm_sum')).filter(AlarmMessage.alarm_time >= start_time, AlarmMessage.alarm_time <= end_time)
                .group_by(AlarmMessage.alarm_source, AlarmMessage.pod) )

Use la función en sql: db.func.function-name () .label ('nombre'), la etiqueta se refiere al nombre después de la consulta y accede, después de usar la etiqueta, puede acceder a la
consulta data.name () aquí significa seleccionar El
filtro de datos representa la condición seleccionada.

Para sqlalchemy, solo relaciones simples de uno a uno, operaciones complejas de relación, y luego escribir y escribir.

190 artículos originales publicados · 19 alabanzas · 200,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/zengchenacmer/article/details/45032033
Recomendado
Clasificación