Repository navigation
Expand file tree
/
Copy pathcreate_database.py
More file actions
149 lines (119 loc) · 5.13 KB
/
Copy pathcreate_database.py
File metadata and controls
149 lines (119 loc) · 5.13 KB
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR"
from flask import Flask, render_template, session, redirect, url_for, flash, request, jsonify
import os
from flask_sqlalchemy import SQLAlchemy
from flask_script import Manager, Shell
from forms import Login, SearchBookForm, ChangePasswordForm, EditInfoForm, SearchStudentForm, NewStoreForm, StoreForm, BorrowForm,FeatureForm, HarrisScoreForm
from flask_login import UserMixin, LoginManager, login_required, login_user, logout_user, current_user
import time, datetime
basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
manager = Manager(app)
app.config['SECRET_KEY'] = 'hard to guess string'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
db = SQLAlchemy(app)
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, Integer
Base = declarative_base()
engine = create_engine("mysql+pymysql://root:root@127.0.0.1/test", encoding="utf-8", echo=True, max_overflow=5)
# 连接mysql数据库,echo为是否打印结果
class Admin(UserMixin, db.Model):
__tablename__ = 'admin'
admin_id = db.Column(db.String(6), primary_key=True)
admin_name = db.Column(db.String(32))
password = db.Column(db.String(24))
right = db.Column(db.String(32))
def __init__(self, admin_id, admin_name, password, right):
self.admin_id = admin_id
self.admin_name = admin_name
self.password = password
self.right = right
def get_id(self):
return self.admin_id
def verify_password(self, password):
if password == self.password:
return True
else:
return False
def __repr__(self):
return '<Admin %r>' % self.admin_name
class PredictData(db.Model):
__tablename__ = 'predict_data'
id = db.Column(db.Integer, primary_key=True, autoincrement=False)
f1 = db.Column(db.String(64))
f2 = db.Column(db.String(64))
f3 = db.Column(db.String(64))
label = db.Column(db.String(64))
def __init__(self,f1, f2, f3, label):
self.f1 = f1
self.f2 = f2
self.f3 = f3
self.label = label
def __repr__(self):
return '<f1: %r f2: %r f3: %r label: %r>' % (self.f1,self.f2,self.f3,self.label)
class HarrisScoreData(db.Model):
__tablename__ = 'harrisscore_data'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
subtime = db.Column(db.String(64))
pain = db.Column(db.String(64))
func = db.Column(db.String(64))
rng = db.Column(db.String(64))
score = db.Column(db.String(64))
def __init__(self,subtime, pain, func, rng, score):
self.subtime = subtime
self.pain = pain
self.func = func
self.rng = rng
self.score = score
def __repr__(self):
return '<time: %r pain: %r function: %r range: %r score: %r>\n' % (self.subtime,self.pain,self.func,self.rng,self.score)
class Book(db.Model):
__tablename__ = 'book'
isbn = db.Column(db.String(13), primary_key=True)
book_name = db.Column(db.String(64))
author = db.Column(db.String(64))
press = db.Column(db.String(32))
class_name = db.Column(db.String(64))
def __repr__(self):
return '<Book %r>' % self.book_name
class Student(db.Model):
__tablename__ = 'student'
card_id = db.Column(db.String(8), primary_key=True)
student_id = db.Column(db.String(9))
student_name = db.Column(db.String(32))
sex = db.Column(db.String(2))
telephone = db.Column(db.String(11), nullable=True)
enroll_date = db.Column(db.String(13))
valid_date = db.Column(db.String(13))
loss = db.Column(db.Boolean, default=False) # 是否挂失
debt = db.Column(db.Boolean, default=False) # 是否欠费
def __repr__(self):
return '<Student %r>' % self.student_name
class Inventory(db.Model):
__tablename__ = 'inventory'
barcode = db.Column(db.String(6), primary_key=True)
isbn = db.Column(db.ForeignKey('book.isbn'))
storage_date = db.Column(db.String(13))
location = db.Column(db.String(32))
withdraw = db.Column(db.Boolean, default=False) # 是否注销
status = db.Column(db.Boolean, default=True) # 是否在馆
admin = db.Column(db.ForeignKey('admin.admin_id')) # 入库操作员
def __repr__(self):
return '<Inventory %r>' % self.barcode
class ReadBook(db.Model):
__tablename__ = 'readbook'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
barcode = db.Column(db.ForeignKey('inventory.barcode'), index=True)
card_id = db.Column(db.ForeignKey('student.card_id'), index=True)
start_date = db.Column(db.String(13))
borrow_admin = db.Column(db.ForeignKey('admin.admin_id')) # 借书操作员
end_date = db.Column(db.String(13), nullable=True)
return_admin = db.Column(db.ForeignKey('admin.admin_id')) # 还书操作员
due_date = db.Column(db.String(13)) # 应还日期
def __repr__(self):
return '<ReadBook %r>' % self.id
Base.metadata.create_all(engine) # 创建表结构
# 父类Base调用所有继承他的子类来创建表结构