找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1408|回复: 2

[求助] 沒有報錯 但是卻製造不了db文件

2

主题

3

帖子

3

积分

贫民

积分
3
本人不存在 发表于 2022-9-28 12:13:51 | 显示全部楼层 |阅读模式
from flask import Flask, render_template, request, flash
import sqlite3
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

import os


currentdirectory = os.path.dirname(os.path.abspath(__file__))

#create a Flask Instance
app = Flask(__name__)

#=====add database=====
app.config['SQLAlCHEMY_DATABASE_URI'] = 'sqlite:///users.db'

# app.config['SECRET_KET'] = 'password'
#secret key
app.secret_key = 'password'

#initialize the database
db = SQLAlchemy(app)

#creat model
class Users(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(200), nullable = False)
    email = db.Column(db.String(120), nullable = False, unique = True)
    date_added = db.Column(db.DateTime, default = datetime.utcnow)

    #create a string
    def __repr__(self):
        return '<Name %r>' % self.name

#Create a Form Class
class UserForm(FlaskForm):
    name = StringField("Name", validators = [DataRequired()])
    email = StringField("Email", validators = [DataRequired()])
    submit = SubmitField('Submit')

#Create a Form Class
class NamerForm(FlaskForm):
    name = StringField("What is your name", validators = [DataRequired()])
    submit = SubmitField('Submit')


@app.route('/user/add', methods = ['GET', 'POST'])
def add_user():
    name = None
    #=====這個是根據上面的class UserForm(FlaskForm):=====
    form = UserForm()
    if form.validate_on_submit():
        user = Users.query.filter_by(email = form.email.data).first()
        if user is None:
            user = Users(name = form.name.data, email = form.email.data)
            db.session.add(user)
            db.session.commit()
        name = form.name.data
        form.name.data = ''
        form.email.data = ''
        flash("User Added Successfully!")
    our_users = Users.query.order_by(Users.date_added)
    return render_template('add_user.html', form = form, name = name, our_users = our_users)



@app.route('/')
def index():
    first_name = "John"
    stuff = "This is bold text"
    favourite_pizza = ["Pepperoni", "Cheese", 'Mashrooms', 41]
    return render_template('index.html', first_name = first_name, stuff = stuff, favourite_pizza = favourite_pizza)

@app.route('/user/<name>')
def user(name):
    return render_template("user.html", user_name = name)


#Invalid URL
@app.errorhandler(404)
def page_not_found(e):
    return render_template("404.html"), 404

#Internal Server Error
@app.errorhandler(500)
def page_not_found(e):
    return render_template("500.html"), 500

#create name page
@app.route('/name', methods = ['GET', 'POST'])
def name():
    name = None
    form = NamerForm()
    #Validate form
    if form.validate_on_submit():
        name = form.name.data
        form.name.data = ''
        flash("Form Submitted Successfully")
    return render_template("name.html", name = name, form = form)



if __name__ == '__main__':
    app.run()Windows PowerShell尝试新的跨平台 PowerShell https://aka.ms/pscore6无法加载文件 C:\Users\user\PycharmProjects\flask\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_E xecution_Policies。    + CategoryInfo          : SecurityError: (:) [],ParentContainsErrorRecordException    + FullyQualifiedErrorId : UnauthorizedAccessPS C:\Users\user\PycharmProjects\flask> pythonPython 3.10.7 (tags/v3.10.7:6cc6b13, Sep  5 2022, 14:08:36) [MSC v.1933 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> from hello import dbC:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\flask_sqlalchemy\__init__.py:851: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".  warnings.warn(C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\flask_sqlalchemy\__init__.py:872: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATI** adds significant overhead and will be disabled by default in the future.  Set it to True or False to suppress this warning.  warnings.warn(FSADeprecationWarning(>>> db.create_all()>>> exit()PS C:\Users\user\PycharmProjects\flask>
回复

使用道具 举报

2

主题

3

帖子

3

积分

贫民

积分
3
本人不存在  楼主| 发表于 2022-9-28 12:19:30 | 显示全部楼层
Windows PowerShell

尝试新的跨平台 PowerShell https://aka.ms/pscore6

无法加载文件 C:\Users\user\PycharmProjects\flask\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_E
xecution_Policies。
    + CategoryInfo          : SecurityError: (:) [],ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnauthorizedAccess
PS C:\Users\user\PycharmProjects\flask> python
Python 3.10.7 (tags/v3.10.7:6cc6b13, Sep  5 2022, 14:08:36) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from hello import db
C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\flask_sqlalchemy\__init__.py:851: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defa
ulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".
  warnings.warn(
C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\flask_sqlalchemy\__init__.py:872: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATI** adds significant overhea
d and will be disabled by default in the future.  Set it to True or False to suppress this warning.
  warnings.warn(FSADeprecationWarning(
>>> db.create_all()
>>> exit()
PS C:\Users\user\PycharmProjects\flask>
回复 支持 反对

使用道具 举报

2

主题

3

帖子

3

积分

贫民

积分
3
本人不存在  楼主| 发表于 2022-9-30 09:10:00 | 显示全部楼层
問題已經解決。包括有以下幾個步驟。
1. 新增了一些代碼
from flask import Flask, render_template, request, flash
import sqlite3
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

import os


currentdirectory = os.path.dirname(os.path.abspath(__file__))

#create a Flask Instance
app = Flask(__name__)

#=====add database=====
app.config['SQLAlCHEMY_DATABASE_URI'] = 'sqlite:////Users/user/PycharmProjects/flask/users.db'

# app.config['SECRET_KET'] = 'password'
#secret key
app.secret_key = 'password'

#initialize the database
db = SQLAlchemy(app)

#creat model
class Users(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(200), nullable = False)
    email = db.Column(db.String(120), nullable = False, unique = True)
    date_added = db.Column(db.DateTime, default = datetime.utcnow)


   def __init__(self, name, email, date_added):
        self.name = name
        self.email = email
        self.date_added = date_added


    #create a string
    def __repr__(self):
        return '<Name %r>' % self.name


class Config(object):
        SQLALCHEMY_DATABASE_URI = 'sqlite:////Users/user/PycharmProjects/flask/users.db'

app.config.from_object(Config)

#Create a Form Class
class UserForm(FlaskForm):
    name = StringField("Name", validators = [DataRequired()])
    email = StringField("Email", validators = [DataRequired()])
    submit = SubmitField('Submit')

#Create a Form Class
class NamerForm(FlaskForm):
    name = StringField("What is your name", validators = [DataRequired()])
    submit = SubmitField('Submit')


@app.route('/user/add', methods = ['GET', 'POST'])
def add_user():
    name = None
    #=====這個是根據上面的class UserForm(FlaskForm):=====
    form = UserForm()
    if form.validate_on_submit():
        user = Users.query.filter_by(email = form.email.data).first()
        if user is None:
            user = Users(name = form.name.data, email = form.email.data)
            db.session.add(user)
            db.session.commit()
        name = form.name.data
        form.name.data = ''
        form.email.data = ''
        flash("User Added Successfully!")
    our_users = Users.query.order_by(Users.date_added)
    return render_template('add_user.html', form = form, name = name, our_users = our_users)



@app.route('/')
def index():
    first_name = "John"
    stuff = "This is bold text"
    favourite_pizza = ["Pepperoni", "Cheese", 'Mashrooms', 41]
    return render_template('index.html', first_name = first_name, stuff = stuff, favourite_pizza = favourite_pizza)

@app.route('/user/<name>')
def user(name):
    return render_template("user.html", user_name = name)


#Invalid URL
@app.errorhandler(404)
def page_not_found(e):
    return render_template("404.html"), 404

#Internal Server Error
@app.errorhandler(500)
def page_not_found(e):
    return render_template("500.html"), 500

#create name page
@app.route('/name', methods = ['GET', 'POST'])
def name():
    name = None
    form = NamerForm()
    #Validate form
    if form.validate_on_submit():
        name = form.name.data
        form.name.data = ''
        flash("Form Submitted Successfully")
    return render_template("name.html", name = name, form = form)



if __name__ == '__main__':
    app.run()
2. 有關於創造db的代碼,在新增一版的py檔案運行

3. 使用絕對路徑

4. 在pycharm的powershell,運行以下的代碼

pip3 install Flask-SQLAlchemy

python

from hello import db

db.create_all()

exit()

$env:FLASK_APP="hello.py"

flask run
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表