(3)PyCharm中Flask工程逆向生成数据库表

 一、创建数据库

在mysql数据库中创建名为"movie"的数据库。

 

二、安装SQLAlchemy

 

三、安装PyMySQL

 

四、创建数据模型

在app/models.py中编写数据库模型:

  1 # coding:utf8
  2 from flask import Flask
  3 from flask_sqlalchemy import SQLAlchemy
  4 from datetime import datetime
  5 import pymysql
  6 
  7 app = Flask(__name__)
  8 app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:root@127.0.0.1:3306/movie"
  9 app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
 10 
 11 db = SQLAlchemy(app)
 12 
 13 
 14 # 会员
 15 class User(db.Model):
 16     __tablename__ = "user"
 17     id = db.Column(db.Integer, primary_key=True)  # 编号
 18     name = db.Column(db.String(100), unique=True)  # 昵称
 19     pwd = db.Column(db.String(100))  # 密码
 20     email = db.Column(db.String(100), unique=True)  # 邮箱
 21     phone = db.Column(db.String(11), unique=True)  # 手机号码
 22     info = db.Column(db.Text)  # 个性简介
 23     face = db.Column(db.String(255), unique=True)  # 头像
 24     addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 注册时间
 25     uuid = db.Column(db.String(255), unique=True)  # 唯一标志符
 26     userlogs = db.relationship('Userlog', backref='user')  # 会员日志外键关系关联
 27     comments = db.relationship('Comment', backref='user')  # 评论外键关系关联
 28     moviecols = db.relationship('Moviecol', backref='user')  # 收藏外键关系关联
 29 
 30     def __repr__(self):
 31         return "<User %r>" % self.name
 32 
 33     def check_pwd(self, pwd):
 34         from werkzeug.security import check_password_hash
 35         return check_password_hash(self.pwd, pwd)
 36 
 37 
 38 # 会员登录日志
 39 class Userlog(db.Model):
 40     __tablename__ = "userlog"
 41     id = db.Column(db.Integer, primary_key=True)  # 编号
 42     user_id = db.Column(db.Integer, db.ForeignKey('user.id'))  # 所属会员
 43     ip = db.Column(db.String(100))  # 登录IP
 44     addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 登录时间
 45 
 46     def __repr__(self):
 47         return "<Userlog %r>" % self.id
 48 
 49 
 50 # 标签
 51 class Tag(db.Model):
 52     __tablename__ = "tag"
 53     id = db.Column(db.Integer, primary_key=True)  # 编号
 54     name = db.Column(db.String(100), unique=True)  # 标题
 55     addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
 56     movies = db.relationship("Movie", backref='tag')  # 电影外键关系关联
 57 
 58     def __repr__(self):
 59         return "<Tag %r>" % self.name
 60 
 61 
 62 # 电影
 63 class Movie(db.Model):
 64     __tablename__ = "movie"
 65     id = db.Column(db.Integer, primary_key=True)  # 编号
 66     title = db.Column(db.String(255), unique=True)  # 标题
 67     url = db.Column(db.String(255), unique=True)  # 地址
 68     info = db.Column(db.Text)  # 简介
 69     logo = db.Column(db.String(255), unique=True)  # 封面
 70     star = db.Column(db.SmallInteger)  # 星级
 71     playnum = db.Column(db.BigInteger)  # 播放量
 72     commentnum = db.Column(db.BigInteger)  # 评论量
 73     tag_id = db.Column(db.Integer, db.ForeignKey('tag.id'))  # 所属标签
 74     area = db.Column(db.String(255))  # 上映地区
 75     release_time = db.Column(db.Date)  # 上映时间
 76     length = db.Column(db.String(100))  # 播放时间
 77     addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
 78     comments = db.relationship("Comment", backref='movie')  # 评论外键关系关联
 79     moviecols = db.relationship("Moviecol", backref='movie')  # 收藏外键关系关联
 80 
 81     def __repr__(self):
 82         return "<Movie %r>" % self.title
 83 
 84 
 85 # 上映预告
 86 class Preview(db.Model):
 87     __tablename__ = "preview"
 88     id = db.Column(db.Integer, primary_key=True)  # 编号
 89     title = db.Column(db.String(255), unique=True)  # 标题
 90     logo = db.Column(db.String(255), unique=True)  # 封面
 91     addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
 92 
 93     def __repr__(self):
 94         return "<Preview %r>" % self.title
 95 
 96 
 97 # 评论
 98 class Comment(db.Model):
 99     __tablename__ = "comment"
100     id = db.Column(db.Integer, primary_key=True)  # 编号
101     content = db.Column(db.Text)  # 内容
102     movie_id = db.Column(db.Integer, db.ForeignKey('movie.id'))  # 所属电影
103     user_id = db.Column(db.Integer, db.ForeignKey('user.id'))  # 所属用户
104     addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
105 
106     def __repr__(self):
107         return "<Comment %r>" % self.id
108 
109 
110 # 电影收藏
111 class Moviecol(db.Model):
112     __tablename__ = "moviecol"
113     id = db.Column(db.Integer, primary_key=True)  # 编号
114     movie_id = db.Column(db.Integer, db.ForeignKey('movie.id'))  # 所属电影
115     user_id = db.Column(db.Integer, db.ForeignKey('user.id'))  # 所属用户
116     addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
117 
118     def __repr__(self):
119         return "<Moviecol %r>" % self.id
120 
121 
122 # 权限
123 class Auth(db.Model):
124     __tablename__ = "auth"
125     id = db.Column(db.Integer, primary_key=True)  # 编号
126     name = db.Column(db.String(100), unique=True)  # 名称
127     url = db.Column(db.String(255), unique=True)  # 地址
128     addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
129 
130     def __repr__(self):
131         return "<Auth %r>" % self.name
132 
133 
134 # 角色
135 class Role(db.Model):
136     __tablename__ = "role"
137     id = db.Column(db.Integer, primary_key=True)  # 编号
138     name = db.Column(db.String(100), unique=True)  # 名称
139     auths = db.Column(db.String(600))  # 角色权限列表
140     addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
141     admins = db.relationship("Admin", backref='role')  # 管理员外键关系关联
142 
143     def __repr__(self):
144         return "<Role %r>" % self.name
145 
146 
147 # 管理员
148 class Admin(db.Model):
149     __tablename__ = "admin"
150     id = db.Column(db.Integer, primary_key=True)  # 编号
151     name = db.Column(db.String(100), unique=True)  # 管理员账号
152     pwd = db.Column(db.String(100))  # 管理员密码
153     is_super = db.Column(db.SmallInteger)  # 是否为超级管理员,0为超级管理员
154     role_id = db.Column(db.Integer, db.ForeignKey('role.id'))  # 所属角色
155     addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
156     adminlogs = db.relationship("Adminlog", backref='admin')  # 管理员登录日志外键关系关联
157     oplogs = db.relationship("Oplog", backref='admin')  # 管理员操作日志外键关系关联
158 
159     def __repr__(self):
160         return "<Admin %r>" % self.name
161 
162     def check_pwd(self, pwd):
163         from werkzeug.security import check_password_hash
164         return check_password_hash(self.pwd, pwd)
165 
166 
167 # 管理员登录日志
168 class Adminlog(db.Model):
169     __tablename__ = "adminlog"
170     id = db.Column(db.Integer, primary_key=True)  # 编号
171     admin_id = db.Column(db.Integer, db.ForeignKey('admin.id'))  # 所属管理员
172     ip = db.Column(db.String(100))  # 登录IP
173     addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 登录时间
174 
175     def __repr__(self):
176         return "<Adminlog %r>" % self.id
177 
178 
179 # 操作日志
180 class Oplog(db.Model):
181     __tablename__ = "oplog"
182     id = db.Column(db.Integer, primary_key=True)  # 编号
183     admin_id = db.Column(db.Integer, db.ForeignKey('admin.id'))  # 所属管理员
184     ip = db.Column(db.String(100))  # 登录IP
185     reason = db.Column(db.String(600))  # 操作原因
186     addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 登录时间
187 
188     def __repr__(self):
189         return "<Oplog %r>" % self.id
190 
191 
192 if __name__ == "__main__":
193     db.create_all() # 根据以上数据模型,逆向生成数据库表

以上代码中定义了工程涉及到一些表结构信息,最后定义了一个main方法,用于根据数据模型来逆向生成数据库表。

(值得注意的是,这个main方法的名称不能写错,比如笔者就不小心将"main"拼写成了"mail"而导致运行的时候,数据表没有生成,运行也不报错)

 

五、逆向生成数据表

在PyCharm的命令行窗口中执行"python app/models.py"命令来运行main方法:

 

查看mysql数据库,数据表成功生成:

 

检查下表结构也没有问题:

 

(结束)

 

转载于:https://www.cnblogs.com/jun1019/p/11055388.html

### 回答1: 要在Flask使用PyCharm插入数据库,需要先安装相应的数据库驱动程序和Flask扩展。然后,您可以使用SQLAlchemy等ORM工具来连接和操作数据库。在PyCharm,您可以使用内置的数据库工具来管理和查询数据库。具体的步骤和代码实现可以参考FlaskPyCharm的官方文档和教程。 ### 回答2: 在使用FlaskPyCharm插入数据库时,可以按照以下步骤进行操作: 1. 首先,确保已经安装了FlaskPyCharm,并且已经配置了数据库连接。 2. 在项目文件夹创建一个新的Python文件,用于编写数据库插入的代码。 3. 导入必要的模块和库,例如flask_sqlalchemy和数据库相关的模块。 4. 定义数据库模型,可以使用ORM(对象关系映射)来创建数据库。 5. 在应用程序的配置,配置数据库连接的相关信息,例如数据库的URL和其他连接参数。 6. 创建一个视图函数,用于具体处理插入数据库的逻辑。在该函数,首先创建一个数据库实例,然后使用该实例进行数据库插入操作。 7. 在视图函数,将需要插入数据库的数据传递给数据库实例,调用插入方法将数据插入到数据库。 8. 保存并提交事务,以确保数据的插入操作被正确执行。 9. 在Flask应用程序注册视图函数,使其可以在特定的URL被访问到。 10. 运行Flask应用程序,并通过访问对应的URL来触发插入数据库的逻辑。 总结: 在FlaskPyCharm插入数据库,需要导入相关库和模块,配置数据库连接信息,定义数据库模型,编写视图函数来处理插入操作,并注册视图函数以使其可以被访问到。 ### 回答3: 不好意思,您给出的问题有点模糊,不太清楚您具体想要了解关于flask-pycharm插入数据库的内容。不过,我可以给您提供一些基本的关于如何在Flask项目使用PyCharm插入数据库的信息。 在Flask项目使用PyCharm插入数据库,您需要先进行一些准备工作。首先,您需要安装相应的数据库驱动,例如MySQL的驱动程序pymysql,或者其他数据库的驱动程序,根据您具体使用的数据库而定。 接下来,您需要在您的Flask项目配置数据库连接。在项目的配置文件,您可以使用类似于以下的代码配置数据库连接: ``` app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@localhost/database_name' ``` 其,`username`和`password`是您自己数据库的用户名和密码,`localhost`是数据库所在的主机地址,`database_name`是您所使用的数据库的名称。您也可以根据实际情况使用其他数据库的连接字符串。 一旦您配置好数据库连接,接下来就可以在您的Flask应用程序使用数据库了。您可以使用SQLAlchemy库来进行数据库的插入操作。首先,您需要在您的代码导入SQLAlchemy模块: ``` from flask_sqlalchemy import SQLAlchemy ``` 然后,您可以创建一个数据库对象,并配置它与您的Flask应用程序关联: ``` db = SQLAlchemy(app) ``` 接下来,则可以使用这个对象进行数据库操作,例如插入数据。您可以创建一个数据模型来定义您要插入的数据的结构,然后使用这个模型来插入数据。例如,假设您有一个名为`User`的数据模型,您可以使用以下代码来创建一个新的用户并插入到数据库: ``` user = User(username='testuser', password='testpassword') db.session.add(user) db.session.commit() ``` 这将会在数据库的`User`插入一条新的用户数据。 综上所述,以上是一个简单的关于如何在Flask项目使用PyCharm插入数据库的概述。具体的实现方式可能会因为您使用的数据库和数据模型的不同而有所不同,但这个过程的基本思路是类似的。希望这些信息能对您有所帮助。如果您有更具体的问题,欢迎继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值