使用SQLAlchemy操作MYSQL觸發器

2022-09-04 13:27:12 字數 1808 閱讀 1658

#

coding:utf8

from flask import

flask

from flask_sqlalchemy import

sqlalchemy)#

'secret_key

'] = '

what s the s''

sqlalchemy_database_uri

'] = '

mysql://root:pass@localhost:3306/table''

sqlalchemy_commit_on_teardown

'] =true

'sqlalchemy_track_modifications

'] =true

temp =0

class

comment(db.model):

__tablename__ = '

comment

'id = db.column(db.integer, primary_key=true)

comment = db.column(db.string(128))

created = db.column(db.datetime, index=true, default=datetime.datetime.utcnow())

global

temp

pid = db.column(db.integer)#

, default=temp)

role_id = db.column(db.integer)#

, db.foreignkey('role.id'))

arc_id = db.column(db.integer)#

, db.foreignkey('article.id'))

to_role_id =db.column(db.integer)

@staticmethod

defset_pid(target, value, oldvalue, initiator):

ifnot

target.to_role_id:

global

temp

temp += 1target.pid =temp

#使用set方法 在傳入表單中沒有to_role_id的值的時候 自動呼叫set_id函式,以想要的方式存入資料庫

db.event.listen(comment.arc_id if comment.to_role_id else comment.to_role_id,'

set',comment.set_pid)

#當listen的第乙個引數為空的時候不執行set_pid函式中的**

if__name__ == '

__main__':

#db.create_all() 首先建立表單

s = comment(comment='

cscs

', role_id=1, arc_id=2)

s1 = comment(comment='

cscs

', role_id=1, arc_id=2)

s2 = comment(comment='

cscs

', role_id=2, arc_id=2,to_role_id=1,pid=2)

db.session.add(s)

db.session.add(s1)

db.session.add(s2)

db.session.commit()

sqlalchemy基本操作

sqlalchemy的簡單實用 其他比較好的人寫的 各種基本操作 sqlalchemy指南 常用技巧 usr bin env python coding utf 8 from sqlalchemy import column,string,create engine,metadata from sq...

sqlAlchemy例項操作

from sqlalchemy import create engine from sqlalchemy.ext.declarative import declarative base from sqlalchemy import column,string,integer,float from s...

SQLAlchemy操作MariaDB筆記之三

query方法返回的是乙個可迭代輸出的物件,可以索引和切片。引數可以為表物件,表的字段物件。for instance in session.query user order by user.id print instance.name,instance.fullname for name,fulln...