Python-基本数据库操作 之 flask-sqlalchemy

环境:window操作环境
数据库:mysql
python版本:3.x


阅读目录

  1. ORM的介绍
  2. flask-sqlalchemy的安装
  3. 数据库表的设计和基本增删改查使用

ORM的介绍
Object-relation-map 模型(类) 关系的 映射
flask-sqlalchemy是一套orm框架能够帮助我们操作数据库就跟操作类一样
一个表==一个类 一个表中的数据相当于一个对象

安装方法

pip install flask-sqlalchemy

项目代码加注释

config.py

# coding:utf-8
# author:诸葛亮晶晶
#  Python学习交流公众号  dyq20151205
'''
配置文件用于存放关于数据库的一些参数设置及DEBUG
'''
DEBUG=True
#指定数据库+数据库引擎……sql数据库不识别-所以字符集写成utf8
#dialect+driver://username:password@host:port/database
DIALECT = 'mysql'
DRIVER = 'pymysql'
USERNAME = 'root'
PASSWORD = 'QQqq123456789'
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = 'myblog'
SQLALCHEMY_DATABASE_URI = '{}+{}://{}:{}@{}:{}/{}?charset=utf8'.format(DIALECT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)

SQLALCHEMY_TRACK_MODIFICATIONS = False

app.py

# coding:utf-8
# author:诸葛亮晶晶
#  Python学习交流公众号  dyq20151205
'''
 return redirect(url_for('函数名',id=222)) 反url+参数后重定向网址
 url_for()通过方法名字反查找对应的网址
 数据的增删通过db.session.add/delete实现
 通过db.sessioin.commit()事务提交真正插入到数据库中
'''
from flask import Flask,url_for,redirect,render_template
from flask_sqlalchemy import SQLAlchemy
import config

app=Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)
#创建用户表和文章表示一对多的关系
class User(db.Model):
    __tablename__ = 'user'
    id=db.Column(db.Integer,primary_key=True,autoincrement=True)
    username=db.Column(db.String(100),nullable=False)

#创建一个模型=类=表
class Article(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    title=db.Column(db.String(100),nullable=False)
    content=db.Column(db.Text,nullable=False)
    author_id=db.Column(db.Integer,db.ForeignKey('user.id'))
    '''类似是个user对象 ,正反向引用 通过文章查找作者,通过作者查找他的所有文章,
    他会根据此类中和User表有关联的外键去获取信息'''
    author = db.relationship('User',backref = db.backref('articles'))

'''通过这个可以检测数据库配置是否完成'''
db.create_all()

@app.route('/')
def index():
    '''添加用户'''
    # user1 = User(username='dx')
    # user2 = User(username='yhl')
    # db.session.add(user1)
    # db.session.add(user2)
    # db.session.commit()
    '''添加文章'''
    # article1 = Article(title='title2', content='content2')
    # article1.author = User.query.filter(User.username == 'dx').first()
    # db.session.add(article1)
    # db.session.commit()

    '''通过标题查抄文章的作者信息'''
    article = Article.query.filter(Article.title == 'title1').first()
    print(article.author.username)

    '''通过作者名字查找他写过的所有文章'''
    user=User.query.filter(User.username == 'dx').first()
    results =user.articles
    for article in results:
        print(article.title)
    return render_template('index.html')


@app.route('/login')
def loginpage():
    return render_template('loginpage.html')


if __name__ == '__main__':
    app.run()

关于html文件编写过程中如何引用外部静态文件

静态文件

static
template
这两个文件夹python的jinjia模板会自动识别

在实际项目开发中 每个页面的css 和Script都会单独写在静态文件中
 <link rel="stylesheet" href="{{ url_for('static',filename='css/index.css')}}">
 <img src="{{url_for('static',filename='images/logo.png')}}>
 <script src="{{url_for('static',filename='js/index.js')}}"></script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值