Python Flask构建新闻信息管理系统:数据库设计与实现
!/usr/bin/env python
* coding: utf-8 *
导入必要的库
import flask from flask_sqlalchemy import SQLAlchemy # 导入SQLAlchemy库,用于操作数据库 import datetime import os from sqlalchemy import or_, and_ from flask_babelex import Babel # 导入Babel库,用于本地化和翻译应用程序
创建Flask应用程序实例
app = flask.Flask(name)
实例化Babel对象,用于本地化和翻译应用程序
babel = Babel(app)
设定本地环境为中文
app.config['BABEL_DEFAULT_LOCALE'] = 'zh_CN'
配置MySQL数据库连接参数
host = '127.0.0.1' user = 'root' password = 'admit' database = 'xingwen' app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://%s:%s@%s:3306/%s' % (user, password, host, database) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['SECRET_KEY'] = 'xingwen'
在应用程序中创建SQLAlchemy实例
db = SQLAlchemy(app)
定义User、XinWen和PingLun类,用于描述数据库表的结构
class User(db.Model): # 定义表名 tablename = 'User'
# 定义字段
id = db.Column(db.Integer, unique=True, primary_key=True, autoincrement=True)
name = db.Column(db.String(32), name='用户名')
email = db.Column(db.String(32), name='邮箱')
password = db.Column(db.String(32), name='密码')
user_datetime = db.Column(db.DateTime, nullable=True, default=datetime.datetime.now)
# 建立User和PingLun实体之间的关系
pinglun = db.relationship('PingLun', backref='User')
def __repr__(self):
return '<{}账号>'.format(self.email)
class XinWen(db.Model): tablename = 'XinWen'
id = db.Column(db.Integer, unique=True, primary_key=True, autoincrement=True)
title = db.Column(db.String(124), name='标题')
media = db.Column(db.String(124), name='来源')
url = db.Column(db.String(512), name='链接')
top_time = db.Column(db.String(124), name='发布时间')
content = db.Column(db.TEXT, name='内容')
xinwen_datetime = db.Column(db.DateTime(), nullable=True, default=datetime.datetime.now)
# 建立XinWen和PingLun实体之间的关系
pinglun = db.relationship('PingLun', backref='XinWen')
def __repr__(self):
return '<{} 新闻信息>'.format(self.title)
class PingLun(db.Model): tablename = 'PingLun'
id = db.Column(db.Integer, unique=True, primary_key=True)
content = db.Column(db.TEXT, name='评价内容')
user_id = db.Column(db.Integer, db.ForeignKey('User.id'))
xinwen_id = db.Column(db.Integer, db.ForeignKey('XinWen.id'))
dates = db.Column(db.DateTime(), nullable=True, default=datetime.datetime.now)
def __repr__(self):
return '< {} 评价 {} 新闻信息>'.format(self.user_id, self.xinwen_id)
if name == 'main': # db.drop_all() # 清空数据 db.create_all() # 创建所有表
# 添加一条用户记录
db.session.add(User(name='admin', email='admin@qq.com', password='root123456'))
db.session.commit()
原文地址: https://www.cveoy.top/t/topic/jx43 著作权归作者所有。请勿转载和采集!