使用SQLAlchemy操作MYSQL黑科技之 event

# coding:utf8
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
#app.config.from_pyfile(‘config‘)
db = SQLAlchemy(app)

app.config[‘SECRET_KEY‘] = ‘what s the s‘
app.config[‘SQLALCHEMY_DATABASE_URI‘] = ‘mysql://root:[email protected]:3306/table‘
app.config[‘SQLALCHEMY_COMMIT_ON_TEARDOWN‘] = True
app.config[‘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
    def set_pid(target, value, oldvalue, initiator):
        if not target.to_role_id:
            global temp
            temp += 1
            target.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()
时间: 2024-11-12 11:51:30

使用SQLAlchemy操作MYSQL黑科技之 event的相关文章

使用SQLAlchemy操作MYSQL黑科技之 属性订制

1 class Role(UserMixin, db.Model): 2 __tablename__ = 'Role' 3 id = db.Column(db.Integer, primary_key=True) 4 username = db.Column(db.String(64), nullable=True) 5 role = db.Column(db.String(64), nullable=True) 6 password = db.Column(db.String(64), nul

sqlalchemy操作Mysql

SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”.SQLAlchemy的理念是,SQL数据库的量级和性能重要于对象集合:而对象集合的抽象又重要于表和行.因此,SQLAlchmey采用了类似于Java里Hibernate的数据映射模型,而不是其他ORM框架采用的Active Record模型.不过,Elixir和declarative等可选插件可以让用户使用声明语法. 安装 pip3 install SQLAlchemy pip3 in

MySQL黑科技用法总结(持续更新)

1.利用set插入数值 insert [into] 表名 set 列=值.  2.利用select对字段进行测试 //A表中只有1个字段num1 int(3) ,并且有2条记录 //测试内容:查询出num1的值,测试num1的值是否等于'1',是否等于'3',num1+1的计算结果 tips:相等返回1,否则返回0 select *,num1='1',num1='3',num1+1 from A;

python操作mysql(pymysql + sqlalchemy)

pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行sql #!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1') # 创建

Python之Mysql及SQLAlchemy操作总结

一.Mysql命令总结 1.创建库 create database test1; 2.授权一个用户 grant all privileges on *.* to 'feng'@'%' identified by '[email protected]'; 3.创建表 create table Teacher( teaId int not null, teaname varchar(100), age int, sex enum('M', 'F'), phone int); 4.查询 select

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- coding: utf-8 -*- ''' 数据起始日期:2015-05-08 数据库:mysql ''' import requests from bs4 import BeautifulSoup import json import pymysql import datetime import ti

python操作mysql ------- SqlAchemy正传

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL #!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1

2017黑科技趋势最具看点的十大新品

腾讯数码讯(Human)作为一年一度的全球消费电子市场风向标,今年同样在拉斯维加斯举办的CES 2017消费电子展,依然吸引了一大批全球各个领域的厂商参展,从科技巨头到初创小团队.从传统汽车厂商再到家电企业,似乎所有能与科技沾边的公司都希望能在CES 2017上好好展示一次自己的风采. 其实每年的CES都有一些明星产品给我们留下深刻的印象,今年的也不例外.而这些明星产品不仅仅只是单单一款产品,更是代表了各自行业在进入到2017年之后的一个发展趋势和方向.而就将这样的变化能否成为未来的主流.或只是

python操作MySQL

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 ? 1 pip3 install pymysql 使用操作 1.执行SQL + ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #!/usr/bin/env python # -*-