喵吉欧尼酱

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

(Microfilm) D:\Microfilm\Microfilm\Scripts>pip install -i https://pypi.douban.com/simple/ flask-sqlalchemy

 配置app.confing   http://www.pythondoc.com/flask-sqlalchemy/config.html

model 数据模型参考 http://www.pythondoc.com/flask-sqlalchemy/models.html

 创建Mysql数据库

mysql> create database movie;
Query OK, 1 row affected (0.00 sec)

 

 

 

 

 

 

 


 

 

 

 

 

 

app/model.py

#conding:utf-8
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
import pymysql
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"]="mysql+pymysql://root:root@127.0.0.1:3306/movie"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"]=True  #http://www.pythondoc.com/flask-sqlalchemy/config.html
db = SQLAlchemy(app)

#会员
class User(db.Model):
    __tablename__ = "user"
    id =db.Column(db.Integer,primary_key=True) #整形  ,,主键    编号
    name =db.Column(db.String(100),unique=True) #唯一   呢陈
    pwd =db.Column(db.String(100))   #密码
    email =db.Column(db.String(100),unique=True)  #邮箱
    phone =db.Column(db.String(11),unique=True)  #手机号
    info =db.Column(db.Text)  #信息
    face = db.Column(db.String(255),unique=True)  #头像
    addtime =db.Column(db.DateTime,index=True,default= datetime.now()) #index索引   #祖册时间
    uuid = db.Column(db.String(255),unique=True)   #唯一标志符号
    userlogs=db.relationship('Userlog',backref='user') #会员外键关联
    comments =  db.relationship('Comment',backref='user') #评论外键关联
    moviecols = db.relationship('Moviecol', backref='user')  # 收藏外键关联
    def __repr__(self):
        return '<User %r>' % self.name


#会员登入日志
class Userlog(db.Model):
    __tablename__ = 'userlogs'
    id = db.Column(db.Integer,primary_key=True) #编号
    user_id = db.Column(db.Integer,db.ForeignKey('user.id'))  #所属会员
    ip = db.Column(db.String(100))  #登入IP
    addtime = db.Column(db.DateTime,index=True,default=datetime.now())  #登入时间

    def __repr__(self):
        return '<Userlog %r>' % self.id


#标签
class Tag(db.Model):
    __tablename__ = 'tag'
    id = db.Column(db.Integer,primary_key=True) #编号
    name = db.Column(db.String(100),unique=True) #标题
    addtime = db.Column(db.DateTime,index=True,default=datetime.now) #添加时间
    movies = db.relationship('Movie',backref='tag')  #绑定当前tag表
    def __repr__(self):
        return '<Tag %r>' % self.name

#电影
class Movie(db.Model):
    __tablename__ = 'movie'
    id = db.Column(db.Integer,primary_key=True) #编号
    title = db.Column(db.String(255), unique=True)  #标题
    url = db.Column(db.String(255), unique=True)  #地址
    info = db.Column(db.Text)  #简介
    logo = db.Column(db.String(255), unique=True) #封面
    star = db.Column(db.SmallInteger) #星级
    playnum = db.Column(db.BigInteger)#播放量
    commentnun = db.Column(db.BigInteger)#评论了
    tag_id = db.Column(db.Integer,db.ForeignKey('tag.id'))#所属标签
    area = db.Column(db.String(255))#上映地区
    release_time = db.Column(db.Date)#上映时间
    length = db.Column(db.String(100))#播放时间
    addtime = db.Column(db.DateTime,index=True,default=datetime.now) #添加时间
    comments = db.relationship('Comment', backref='movie')  # 绑定评论外键关联表
    moviecols = db.relationship('Moviecol', backref='movie')  # 收藏外键关联
    def __repr__(self):
        return '<Movie %r>' % self.title

#上映预告
class Preview(db.Model):
    __tablename__ ='preview'
    id= db.Column(db.Integer,primary_key=True) #编号
    title = db.Column(db.String(255), unique=True)  # 标题
    log = db.Column(db.Integer, unique=True)  # 封面
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间

    def __repr__(self):
        return '<Preview %r>' % self.title

#评论
class Comment(db.Model):
    __tablename__ = 'comment'
    id = db.Column(db.Integer, primary_key=True)  # 编号
    content = db.Column(db.Text)  #内容
    movie_id = db.Column(db.Integer,db.ForeignKey('movie.id'))#所属电影
    user_id= db.Column(db.Integer,db.ForeignKey('user.id')) #所属评论
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)#添加时间

    def __repr__(self):
        return '<Comment %r>' % self.id
#收藏电影
class Moviecol(db.Model):
    __tablename__ = 'moviecol'
    id = db.Column(db.Integer, primary_key=True)  # 编号
    movie_id = db.Column(db.Integer,db.ForeignKey('movie.id'))#所属电影
    user_id= db.Column(db.Integer,db.ForeignKey('user.id')) #所属用户
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)#添加时间

    def __repr__(self):
        return '<Moviecol %r>' % self.id

#权限
class Auth(db.Model):
    __tablename__ = 'auth'
    id = db.Column(db.Integer, primary_key=True)  # 编号
    name = db.Column(db.String(100),unique=True) #名称
    url = db.Column(db.String(255),unique=True) #地址
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间

    def __repr__(self):
        return '<Auth %r>' % self.name
#角色数据
class Role(db.Model):
    __tablename__ = 'role'
    id = db.Column(db.Integer, primary_key=True)  # 编号
    name = db.Column(db.String(100),unique=True) #名称
    auths = db.Column(db.String(600)) #权限列表
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
    admins=db.relationship("Admin",backref = 'role') #管理员外键关系关联
    def __repr__(self):
        return '<Role %r>' % self.name

#管理员
class Admin(db.Model):
    __tablename__ = 'admin'
    id = db.Column(db.Integer, primary_key=True)  # 编号
    name = db.Column(db.String(100),unique=True) #名称
    pwd = db.Column(db.String(100)) #管理员密码
    is_super = db.Column(db.SmallInteger) #0为超级管理员
    role_id = db.Column(db.Integer, db.ForeignKey('role.id')) #所属角色
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
    adminlogs = db.relationship("Adminlog", backref='admin')#管理员登入日志
    oplogs = db.relationship("Oplog", backref='admin')  #管理员操作日志
    def __repr__(self):
        return '<Admin %r>' % self.name
#管理员登入日志
class Adminlog(db.Model):
    __tablename__ = 'adminlog'
    id = db.Column(db.Integer,primary_key=True) #编号
    admin_id = db.Column(db.Integer,db.ForeignKey('admin.id'))  #所属会员
    ip = db.Column(db.String(100))  #登入IP
    addtime = db.Column(db.DateTime,index=True,default=datetime.now())  #登入时间

    def __repr__(self):
        return '<Adminlog %r>' % self.id

#管理员操作日志
class Oplog(db.Model):
    __tablename__ = 'oplog'
    id = db.Column(db.Integer,primary_key=True) #编号
    admin_id = db.Column(db.Integer,db.ForeignKey('admin.id'))  #所属会员
    ip = db.Column(db.String(100))  #登入IP
    reson = db.Column(db.String(600))  # 操作原因
    addtime = db.Column(db.DateTime,index=True,default=datetime.now())  #登入时间

    def __repr__(self):
        return '<Oplog %r>' % self.id

if __name__ == '__main__':
    #db.create_all()
    '''
    #插入角色
    role= Role(
        name = '超级管理员',
        auths=''
    )
    db.session.add(role)
    db.session.commit()'''
    from werkzeug.security import generate_password_hash
    admin = Admin(
        name='root',
        pwd=generate_password_hash('rootroot'),
        is_super = 0,
        role_id =1
    )
    db.session.add(admin)
    db.session.commit()
models.py

 

下载

(Microfilm) D:\Microfilm\app>pip install pymysql

运行

(Microfilm) D:\Microfilm\app>python models.py

 

 

数据库操作笔记

 

mysql> create database movie;   创数据库电影

mysql> use movie;   #使用数据库
Database changed
mysql> show tables;  显示列表
+-----------------+
| Tables_in_movie |
+-----------------+
| admin           |
| adminlog        |
| auth            |
| comment         |
| movie           |
| moviecol        |
| oplog           |
| preview         |
| role            |
| tag             |
| user            |
| userlogs        |
+-----------------+
12 rows in set (0.00 sec)

mysql> desc admin;  查看数据库结构
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| name     | varchar(100) | YES  | UNI | NULL    |                |
| pwd      | varchar(100) | YES  |     | NULL    |                |
| is_super | smallint(6)  | YES  |     | NULL    |                |
| role_id  | int(11)      | YES  | MUL | NULL    |                |
| addtime  | datetime     | YES  | MUL | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

mysql> select * from role;   查询数据库
+----+-----------------+-------+---------------------+
| id | name            | auths | addtime             |
+----+-----------------+-------+---------------------+
|  1 | 超级管理员      |       | 2018-01-14 09:08:50 |
+----+-----------------+-------+---------------------+
1 row in set (0.07 sec)

mysql> select * from admin/G;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/G' at line 1
mysql> select * from admin\G;
*************************** 1. row ***************************
      id: 1
    name: root
     pwd: pbkdf2:sha256:50000$z4vB7RtA$f9d787053efdf560ed05414764c530217a032240e954e642fb3237a5970886dc
is_super: 0
 role_id: 1
 addtime: 2018-01-14 09:14:29
1 row in set (0.00 sec)

ERROR:
No query specified

 

posted on 2018-01-14 14:30  喵吉欧尼酱  阅读(260)  评论(0)    收藏  举报