代码被我改来改去剩一口气…有木有大神抢救一下…我会上传源码压缩包
不改动里面文件名-文件夹名
只要让这个源码运行不报错,页面可以显示’hello’,可以让数据库初始化
我是想解决分离 连接数据库的配置信息/class类的代码
我应该是搞混在这个构造文件上,不晓得问题出在哪里
@greyli 李哥可以看下么
@yannanxiu 大神没事也来指点下
源码文件watchlistapp/init.py
# -*- coding:utf-8 -*-
from flask import Flask
from watchlistapp.c_extend.exts import db
# from flask_sqlalchemy import SQLAlchemy
from watchlistapp.b_configure import db_config
app = Flask(__name__)
app.config.from_object(db_config)
# 数据库连接
# db = SQLAlchemy()
db.init_app(app)
from watchlistapp.a_main import *
源码文件a_main/viewapp.py
# -*- coding:utf-8 -*-
from watchlistapp import app
from watchlistapp.b_configure.db_class import *
@app.route('/')
def hello():
# 增加
# movieusers = Movieusers(username='test', userpassword='1111')
# db.session.add(movieusers)
# db.session.commit()
# 查询
# result = Movieusers.query.filter(Movieusers.username == 'Tc_Dhl').first()
# getmovieusers = result
# print(getmovieusers.username)
# print(getmovieusers.userpassword)
# 删除
# movieusers = Movieusers.query.filter(Movieusers.content == 'test').first()
# db.session.delete(movieusers)
# db.session.commit()
# 找到电影名为xxx的用户
# movielist = Movielist.query.filter(Movielist.title=='电影1').first()
# print(movielist.movieusers_id_get.username)
# 寻找用户名'Tc_Dhl'下对应的电影名
# movieusers = Movieusers.query.filter(Movieusers.username == 'Tc_Dhl').first()
# result = movieusers.movielist
# for movielist in result:
# print("-" * 10)
# print(movielist.title)
return ('hello')
源码文件b_configure/db_class.py
# -*- coding:utf-8 -*-
from watchlistapp.c_extend.exts import db
class Movieusers(db.Model):# 表名将会是 movieusers(自动生成,小写处理)
__tablename__ = 'movieusers'# 自定义表名字
id = db.Column(db.Integer, primary_key=True)# 主键
username = db.Column(db.String(20), nullable=False)# 名字
userpassword = db.Column(db.String(20), nullable=False)# 密码
class Movielist(db.Model):# 表名将会是 movielist
__tablename__ = 'movielist'# 自定义表名字
id = db.Column(db.Integer, primary_key=True)# 主键
movieusers_id = db.Column(db.INTEGER, db.ForeignKey('movieusers.id'))# 外键 对应movieusers表中的id
title = db.Column(db.String(60), nullable=False)# 电影标题
year = db.Column(db.String(4), nullable=False)# 电影年份
movieusers_id_get = db.relationship('Movieusers', backref=db.backref('movielist'))# 反向引用,从1表寻找2表对应的数据
db.create_all()
源码文件b_configure/db_config.py
# -*- coding:utf-8 -*-
DIALECT = 'mysql'# 数据库类型
DRIVER = 'pymysql'# 连接数据库的驱动
USERNAME = 'root'# 用户名
PASSWORD = 'dhlmysql'# 密码
HOST = '192.168.121.128'# 连接地址
PORT = '3306'# 端口
DATABASE = 'tcgamelist2'# 数据库名
DB_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8mb4".format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST,PORT, DATABASE)
# app.config["SQLALCHEMY_DATABASE_URI"] = DB_URI
SQLALCHEMY_DATABASE_URI = DB_URI
SQLALCHEMY_POOL_TIMEOUT = 10# 连接数据库超时10s连接失败
SQLALCHEMY_POOL_RECYCLE = 1200# 连接数据库后1200s后,断开闲置连接
SQLALCHEMY_ECHO = False# [调试]关闭打印sql语句
SQLALCHEMY_TRACK_MODIFICATIONS = False# [调试]关闭追踪数据库的修改
源码文件c_extend/exts.py
# -*- coding:utf-8 -*-
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
目录结构:
watchlist [
.venv-watchlist-----虚拟目录文件夹
watchlistapp--------程序文件夹
.flaskenv
]
watchlistapp[
a_main----------主视图的在这里
b_configure-----存放数据库的连接文件和class文件
c_extend--------存放ext文件
d_static----------这个不用管
e_templates----这个不用管
init.py------------构造文件
]