Python Flask Sqlalchemy 文件传输

问题描述 投票:0回答:1
from flask import Flask, render_template, request, redirect, url_for, flash
from flask_sqlalchemy import SQLAlchemy
from user import db, Hasta  # user.py'den ilgili sınıfları ve veritabanını içe aktarın

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
app.config['SECRET_KEY'] = 'your_secret_key_here'

db.init_app(app)

@app.route('/')
def index():
    return render_template("index.html")

@app.route('/login', methods=['POST'])
def login():
    username = request.form['username']
    password = request.form['password']

    # Burada Hasta sınıfını kullanabiliriz
    hasta = Hasta.query.filter_by(hasta_username=username, hasta_password=password).first()

    if hasta:
        flash('Giriş başarılı', 'success')
        return redirect(url_for('hello'))
    else:
        flash('Kullanıcı adı veya şifre hatalı!', 'error')
        return redirect(url_for('index'))

@app.route('/hello')
def hello():
    return 'Hello, world!'

if __name__ == "__main__":
    app.run(debug=True)

Hasta =病人此代码位于app.py文件中

from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship
from datetime import datetime

from app import db  # Flask uygulamasını içe aktarın

class Admin(db.Model):
    admin_id = db.Column(db.Integer, primary_key=True)
    admin_username = db.Column(db.String(50), unique=True, nullable=False)
    admin_password = db.Column(db.String(100), unique=True, nullable=False)

    def __init__(self, admin_username, admin_password):
        self.admin_username = admin_username
        self.admin_password = admin_password

class Hasta(db.Model):
    hasta_id = db.Column(db.Integer, primary_key=True)
    hasta_username = db.Column(db.String(50), unique=True, nullable=False)
    hasta_password = db.Column(db.String(100), unique=True, nullable=False)
    hasta_name = db.Column(db.String(25), nullable=False)
    hasta_surname = db.Column(db.String(25), nullable=False)
    hasta_gender = db.Column(db.String(1), nullable=False)
    hasta_birth = db.Column(db.DateTime, nullable=False)
    hasta_tel = db.Column(db.String(16), nullable=False)
    hasta_adres = db.Column(db.String(100), nullable=False)
    hast_admID = db.Column(db.Integer, db.ForeignKey('admin.admin_id'))
    admin = relationship("Admin")

class Doktor(db.Model):
    doktor_id = db.Column(db.Integer, primary_key=True)
    doktor_username = db.Column(db.String(50), unique=True, nullable=False)
    doktor_password = db.Column(db.String(100), unique=True, nullable=False)
    doktor_name = db.Column(db.String(25), nullable=False)
    doktor_surname = db.Column(db.String(25), nullable=False)
    dok_admID = db.Column(db.Integer, db.ForeignKey('admin.admin_id'))
    admin = relationship("Admin")
    dok_hastaID = db.Column(db.Integer, db.ForeignKey('hasta.hasta_id'))
    hasta = relationship("Hasta")

class Randevu(db.Model):
    randevu_id = db.Column(db.Integer, primary_key=True)
    randevu_tar = db.Column(db.DateTime, nullable=False)
    randevu_saat = db.Column(db.Time, nullable=False)
    ran_HastID = db.Column(db.Integer, db.ForeignKey('hasta.hasta_id'))
    hasta = relationship("Hasta")
    ran_DokID = db.Column(db.Integer, db.ForeignKey('doktor.doktor_id'))
    doktor = relationship("Doktor")

class Rapor(db.Model):
    rapor_id = db.Column(db.Integer, primary_key=True)
    rapor_tar = db.Column(db.DateTime, nullable=False)
    rapor_Icer = db.Column(db.String(120), nullable=False)
    rap_hasID = db.Column(db.Integer, db.ForeignKey('hasta.hasta_id'))
    hasta = relationship("Hasta")
    rap_dokID = db.Column(db.Integer, db.ForeignKey('doktor.doktor_id'))
    doktor = relationship("Doktor")
    rap_admID = db.Column(db.Integer, db.ForeignKey('admin.admin_id'))
    admin = relationship("Admin")

# Uygulama bağlamı içinde veri eklemeyi deneyin
with db.app.app_context():
    # Tablolara veri ekleniyor
    admin1 = Admin(admin_username='ibardo', admin_password='yalova77')
    db.session.add(admin1)

    hasta1 = Hasta(hasta_username='gonul', hasta_password='malatya44', hasta_name='Gonul', hasta_surname='Dogan', hasta_gender='K', hasta_birth=datetime(1970, 11, 3), hasta_tel='5356741243', hasta_adres='ZaferMah. Malatya', admin=admin1)
    hasta2 = Hasta(hasta_username='mustafa', hasta_password='yalova77', hasta_name='Mustafa', hasta_surname='Dogan', hasta_gender='E', hasta_birth=datetime(1968, 1, 4), hasta_tel='5325468264', hasta_adres='GocmenMah. Yalova', admin=admin1)
    hasta3 = Hasta(hasta_username='rauf', hasta_password='eskisehir26', hasta_name='Rauf', hasta_surname='Dogan', hasta_gender='E', hasta_birth=datetime(1990, 3, 1), hasta_tel='5359856242', hasta_adres='Tepabasi Eskisehir', admin=admin1)
    db.session.add(hasta1, hasta2, hasta3)

    doktor1 = Doktor(doktor_username='pam', doktor_password='scranton', doktor_name='Pam', doktor_surname='Beesly', admin=admin1, hasta=hasta1)
    doktor2 = Doktor(doktor_username='jim', doktor_password='usajim', doktor_name='Jim', doktor_surname='Halpert', admin=admin1, hasta=hasta2)
    doktor3 = Doktor(doktor_username='mike', doktor_password='engmik', doktor_name='Mike', doktor_surname='Scott', admin=admin1, hasta=hasta3)
    db.session.add(doktor1, doktor2, doktor3)

    randevu1 = Randevu(randevu_tar=datetime(2024, 9, 8), randevu_saat=datetime(13, 0), hasta=hasta1, doktor=doktor1)
    randevu2 = Randevu(randevu_tar=datetime(2025, 4, 2), randevu_saat=datetime(12, 0), hasta=hasta2, doktor=doktor2)
    randevu3 = Randevu(randevu_tar=datetime(2024, 7, 1), randevu_saat=datetime(16, 0), hasta=hasta3, doktor=doktor3)
    db.session.add(randevu1, randevu2, randevu3)

    rapor1 = Rapor(rapor_tar=datetime(2024, 7, 3), rapor_Icer='None', hasta=hasta1, doktor=doktor1, admin=admin1)
    rapor2 = Rapor(rapor_tar=datetime(2024, 5, 2), rapor_Icer='None', hasta=hasta2, doktor=doktor2, admin=admin1)
    rapor3 = Rapor(rapor_tar=datetime(2024, 9, 1), rapor_Icer='None', hasta=hasta3, doktor=doktor3, admin=admin1)
    db.session.add(rapor1, rapor2, rapor3)

    db.session.commit()

user.py 文件中的代码

当我运行此代码时,出现以下错误:File "c:\Python pp.py", line 3, in from user import db, Hasta # user.py'den ilgili sınıfları ve veritabanını içe aktarın ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 文件“c:\Python\user.py”,第 6 行,位于 from app import app # Flask 使用它 ^^^^^^^^^^^^^^^^^^^^ 文件“c:\Python pp.py”,第 3 行,位于 from user import db, Hasta # user.py'den ilgili sınıfları ve veritabanını içe aktarın ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ImportError:无法从部分初始化的模块“user”导入名称“db”(很可能是由于循环导入)(c:\ Python \ user.py) PS C:\Python>

即使我的 user.py 和 app.py 文件位于同一目录中,我也会收到错误。我尝试了各种方法但找不到它。你能帮助我吗。另外,虽然我研究了这个错误,但我做不到。

python flask sqlalchemy
1个回答
0
投票

您的应用程序中应该有一个数据包结构,可以通过 init.py 文件来完成。 Corey Schafer 有一个关于这个主题的很棒的 youtube 教程。我强烈建议您按照这些步骤将应用程序结构转换为数据包结构

© www.soinside.com 2019 - 2024. All rights reserved.