python-Web-flask-数据库

3 数据库:

Flask-SQLAlchemy 安装及连接

pip install flask-sqlalchemy

pip install flask-mysqldb

# 数据库链接地址

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/test'# 动态追踪修改设置,如未设置只会提示警告

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

字段类型:IntegerFloatStringTextBooleanDateTime

选项:primary_keyuniqueindexnullable

关系选项:backrefprimary joinorder_bysecondarysecondary join

 

使用数据库增删该查

#创建SQLAlchemy对象,读取app中配置信息

db = SQLAlchemy(app)#定义角色模型(一方)

class Role(db.Model):

    # 定义表名

    __tablename__ = 'roles'

    # 定义列对象

    id = db.Column(db.Integer, primary_key=True)

    name = db.Column(db.String(64), unique=True)

    #设置关系属性,方便查询使用

    us = db.relationship('User', backref='role')

    #重写__repr__方法,方便查看对象输出内容

    def __repr__(self):

        return 'Role:%s'% self.name

if __name__ == '__main__':

    #删除所有和db相关联的表

    db.drop_all()

    #创建所有和db相关联的表

    db.create_all()

app.run(debug=True)

# 一对多

class Role(db.Model):

    #关键代码反向查寻

    us = db.relationship('User', backref='role', lazy='dynamic')

    ...

class User(db.Model):

    # 外键

    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))

db.session.add(obj) 添加对象

db.session.delete(obj) 删除对象

db.session.commit() 提交会话

db.session.rollback() 回滚

db.session.remove() 移除会话

filter()Limitorder_by()group_by()

all()first()count()

User.query.filter_by(name='wang').all()

User.query.first()

User.query.all()

User.query.filter(User.name.endswith('g')).all() # 模糊

User.query.get(1) # 主键id=1

User.query.filter(User.name!='wang').all() # 不等与wang

from sqlalchemy import not_

User.query.filter(not_(User.name=='chen')).all() # 取反

from sqlalchemy import and_ or_

User.query.filter(and_(User.name!='wang',User.email.endswith('163.com'))).all()#

# 查询后删除

user = User.query.first()

db.session.delete(user)

db.session.commit()

User.query.all()

# 更新

user = User.query.first()

user.name = 'dong'

db.session.commit()

User.query.first()

 

全局钩子

# 导入表单扩展 生成form表单 自带前端验证

from wtforms import Form,StringField,PasswordField,SubmitField,validators

# 自定义表单类 控制我们的表单字段

class BookAddForm(Form):

    # 文本框

  uname = StringField(label="用户名:",validators=[validators.DataRequired()])

  upass = PasswordField(label="密码:")

    usub = SubmitField(label='注册')

 

# upass = PasswordField()

‘’’html’’’

{#  <p> {{ bookaddform.uname.label }}{{ bookaddform.uname }}</p>#}

{#  <p> {{ bookaddform.upass.label }}{{ bookaddform.upass }}</p>#}

 

数据库迁移

pip install flask-migrate

#这个命令会创建migrations文件夹,所有迁移文件都放在里面。

from flask_script import Shell,Manager

from flask_migrate import Migrate,MigrateCommand

manager = Manager(app)

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/Flask_test'

app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

db = SQLAlchemy(app)

#第一个参数是Flask的实例,第二个参数是Sqlalchemy数据库实例

migrate = Migrate(app,db)

#manager是Flask-Script的实例,这条语句在flask-Script中添加一个db命令

manager.add_command('db',MigrateCommand)

Manager.run()

 

命令:

python database.py db init // 迁移初始化

python database.py db migrate -m 'initial migration' // 命名和添加迁移

python database.py db upgrade // 提交到数据库

python app.py db history // 返回以前的所有版本

输出格式:<base> ->  版本号 (head), initial migration

回滚到指定版本

python app.py db downgrade 版本号

 

Rollback:

# 所有的数据处理准备好之后,执行commit才会提交到数据库!

                try:

                    book_name = request.form.get('book_name')

                    bo = Book(name=book_name,author_id=auth.id)

                    # 添加书籍

                    db.session.add(bo)

                    db.session.commit()

                except Exception as e:

                    # 加入数据库commit提交失败,必须回滚!!!

                    db.session.rollback()

                    raise e

 

转载于:https://www.cnblogs.com/person1-0-1/p/11400672.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 Flask 框架搭建 Web 项目的基本步骤: 1. 安装 Flask 可以通过 pip 命令安装 Flask: ``` pip install Flask ``` 2. 创建 Flask 应用 在你的项目文件夹下创建一个 Python 文件,例如 app.py,然后在文件中编写以下代码: ```python from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!' ``` 这个应用只是一个简单的示例,当你访问根 URL 时,它将返回 "Hello, World!"。 3. 启动 Flask 应用 在命令行中进入项目文件夹,并执行以下命令来启动 Flask 应用: ``` export FLASK_APP=app.py # 设置 Flask 应用文件名为 app.py export FLASK_ENV=development # 设置环境为开发环境 flask run # 启动应用 ``` 如果一切顺利,你应该能在终端中看到类似下面的输出: ``` * Serving Flask app "app.py" (lazy loading) * Environment: development * Debug mode: on * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: xxx-xxx-xxx ``` 这表示应用已经成功运行在本地服务器上。你可以在浏览器中输入 http://127.0.0.1:5000/ 访问应用。 4. 创建 HTML 模板和静态文件 在 Flask 中,你可以使用 HTML 模板和静态文件来渲染页面和加载 CSS、JavaScript 等文件。在项目文件夹下创建一个 templates 目录和一个 static 目录,分别用于存放 HTML 模板和静态文件。 在 templates 目录中创建一个名为 index.html 的文件,例如: ```html <!DOCTYPE html> <html> <head> <title>Flask Web App</title> <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"> </head> <body> <h1>Hello, World!</h1> <p>This is a Flask web app.</p> <script src="{{ url_for('static', filename='script.js') }}"></script> </body> </html> ``` 在 static 目录中创建 style.css 和 script.js 文件,例如: ```css body { background-color: #F5F5F5; } ``` ```javascript console.log('Hello, World!'); ``` 5. 渲染 HTML 模板 在 Flask 中,你可以使用 Jinja2 模板引擎来渲染 HTML 模板。修改 app.py 文件,加入以下代码: ```python from flask import Flask, render_template app = Flask(__name__) @app.route('/') def hello(): return render_template('index.html') ``` 这个代码告诉 Flask 在访问根 URL 时渲染 index.html 模板。 6. 运行应用 保存代码修改后,重新运行应用即可看到修改后的效果。 以上就是使用 Flask 搭建 Web 项目的基本步骤。当然,这只是一个简单的示例,实际项目中还需要考虑很多其他因素,例如数据库、用户认证、界面设计等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值