SQLAlchemy:

1.由于sqlalchemy中没有提供choice方法,所以借助SQLAlchemy-Utils组件提供的choice方法

from sqlalchemy_utils import ChoiceType

Base = declarative_base()

class Xuan(Base):

__tablename__ = 'xuan'

types_choices = (

(1,'欧美'),

(2,'日韩'),

(3,'老男孩'),

)

id = Column(Integer,primary_key=True,autoincrement=True)

name = Column(String(64))

types = Column(ChoiceType(types_choices,Integer()))

__table_args__ = {

'mysql_engine':'Innodb',

'mysql_charset':'utf8',

}

2.scoped_session:

from sqlalchemy.orm import sessionmaker

from sqlalchemy import create_engine

from sqlalchemy.orm import scoped_session

SessionFactory = sessionmaker(bind=engine)

# 方式一:由于无法提供线程共享功能,所有在开发时要注意,在每个线程中自己创建 session。

#         from sqlalchemy.orm.session import Session

#         自己具有操作数据库的:'close', 'commit', 'connection', 'delete', 'execute', 'expire',.....

session = SessionFactory()

# print('原生session',session)

# 操作

session.close()

# 方式二:支持线程安全,为每个线程创建一个session

#               - threading.Local

#               - 唯一标识

# ScopedSession对象

#       self.registry(), 加括号 创建session

#       self.registry(), 加括号 创建session

#       self.registry(), 加括号 创建session

from greenlet import getcurrent as get_ident

session = scoped_session(SessionFactory,get_ident)

# session.add

# 操作

session.remove()

3.Flask-SQLAlchemy Flask-Migrate

Flask-SQLAlchemy:吧Flask和SQLAlchemy结合在一起,粘合剂

在__init__.py 文件中

1 引入Flask-SQLAlchemy    中的SQLAlchemy,实例化了一个SQLAlchemy对象

2 注册Flask-SQLAlchemy:

- 有两种方式

方式一: 在函数里面,SQLAlchemy(app)  #如果想在其他地方使用这种方式就不好使了

方式二: 在全局:

db = SQLAlchemy(),

在函数里面 db.init_app(app)  #调用init_app方法吧app放进去了

3、导入models的类

4、导入的类中继承了db.model,其实本质上还是继承了Base类

5、manage.py 创建数据库表,可以通过命令来创建。借助Flask-Migrate组件来完成

Flask-Migrate:

-旧5 被毙掉了:在manage.py里面导入db,以后执行db.create_all()创建表,以后执行drop_all()删除表

这样不好,我们可以和Flask-Migrate结合起来用

-新5:Flask-Migrate

- 安装组件:pip install Flask-Migrate

- 5.1 导入

from flask_migrate import Migrate, MigrateCommand

from app import db, app

- 5.2 migrate = Migrate(app,db) #创建实例

- 5.3 创建命令

manager.add_command("db",MigrateCommand)

- 5.4 执行命令

python manage.py db init  #只执行第一次

python manage.py db migrate

python manage.py db upgrade

在执行命令之前,得先连接数据库,他才会知道吧表放在那里,

from flask_sqlalchemy import SQLAlchemy

from flask import FLask

db = SQLAlchemy()

def create_app():

app = Flask(__name__)

db.init_app(app)

return app

所有用过的组件

Flask

连接数据库的两种操作

要么DBUtils:用于执行原生SQL的

用自己的util里面的sqlhelper来完成

要么SQLAlchemy:遵循他自己的语法来链接

方式一:SQLAlchemy(app)这种方式有局限性,如果我在其他地方也得用到呢?可以吧它写到全局

方式二:优点,

实例化一下:db = SQLAlchemy()

注册:

在settings里面配置一下数据库链接方式

SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123@47.93.4.198:3306/s6?charset=utf8"

SQLALCHEMY_POOL_SIZE = 2

SQLALCHEMY_POOL_TIMEOUT = 30

SQLALCHEMY_POOL_RECYCLE = -1

Flask-SQLAlchemy: db.init_app(app)

Flask-Session  #用于吧session保存在其他地方

Flask-Script  #生成命令

Flask-Migrate   #数据库迁移

Flask-SQLAlchemy  #将Flask和SQLAlchemy很好的结合在一起

#本质、:每次操作数据库就会自动创建一个session连接,完了自动关闭

Blinker  #信号

Wtforms  #FORM组件

用到的组件和版本

pip3 freeze  #获取环境中所有安装的模块

pip3 freeze > a.txt

pip3 freeze > requirements.txt

#pip3 install pipreqs  #帮你找到当前程序的所有模块,并且自动生成 requirements.txt文件,写入内容

pipreqs ./  #根目录

以后别人给你一个程序,告知你一个文件夹需要安装的组件:requirements.txt

进入程序目录:

pip install -r requirements.txt #就会把设计到的所有的组件就会装上

结构:

app

static

templates

views

__init__.py

models.py

转载于:https://www.cnblogs.com/mihon/p/8981031.html

SQLAlchemy Script相关推荐

  1. 用 Flask 来写个轻博客 (3) — (M)VC_连接 MySQL 和 SQLAlchemy

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 前言 Models 模型 SQLAlchemy 安装 SQL ...

  2. flask 学习笔记 mvc ,sqlalchemy(insert,update)

    2019独角兽企业重金招聘Python工程师标准>>> # 模型类 from sqlalchemy import Column, Integer, String from appli ...

  3. flask mysql 1366_2017-11-17 Python Flask Script+mysql环境设置

    [1.初级版] flask-scrpit安装. 使用flask-scrpit可以创建命令,并在Flask的应用上下文中执行,因为这样才能对Flask对象进行修改.Flask Script自带了一些默认 ...

  4. SQLAlchemy 教程 —— 进阶篇

    使用 首先是连接到数据库,SQLALchemy支持多个数据库引擎,不同的数据库引擎连接字符串不一样,常用的有 mysql://username:password@hostname/database p ...

  5. SQLAlchemy中的Django风格的数据库路由器

    Updated August, 2014 – the approach here really won't work very well if you are using transactions! ...

  6. MySQL补充——索引,流程控制,数据备份,python操作mysql,SQLAlchemy

    一.索引 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可. 1.索引种类 普通索引:仅加速查询 唯一索 ...

  7. 使用SQLAlchemy创建数据模型

    https://blog.csdn.net/happyanger6/article/details/53947162 如前所述,模型(models)是对数据抽象并提供通用访问接口的一种方式.在大多数网 ...

  8. Python3下基于bs4和sqlalchemy的爬虫实现

    本文来自网易云社区 作者:王贝 小学生现在都在学python了,作为专业程序员当然不能落下了,所以,快马加鞭,周六周末在家学起了python3,python3的基本语法比较简单,相比于Java开发更加 ...

  9. sqlalchemy 11 Alembic

    创建表时,无论是Core 的 metadata.create_all(engine),还是ORM 的 Base.metadata.create_all(engine),sqlalchemy都只会创建缺 ...

最新文章

  1. 设计模式之享元模式、例子分析
  2. Minimum Depth of Binary Tree
  3. 吃饭、睡觉、打星星之“打星星”!
  4. 超级有用的15个mysqlbinlog命令
  5. 【Python3爬虫】微博用户爬虫
  6. python和c++哪个好-python和C++语言哪个好?老男孩教育
  7. 三种射频通信接收机原理框图及优缺点
  8. STK航空仿真(一)界面配置和插入模型
  9. Android 投影MAC,Vysor pro 破解
  10. 职场学做“功夫熊猫”
  11. 什么是沟通能力?如何提升沟通能力?
  12. Internet随笔
  13. Windows下网络共享文件夹挂载到wsl系统
  14. linux fish 中set 设定PATH 和BROWSER
  15. 【MySQL】如何构建一个完整的MySQL知识体系(MySQL专栏启动)
  16. Can‘t locate CPAN.pm in @INC
  17. 两台电脑实现共用鼠标键盘的软件ShareMouse
  18. 2021-03-22linux内核编译和安装过程
  19. Json接口代码生成工具-Json2Code
  20. r77-Rootkit后渗透技战术分析

热门文章

  1. Mono Compatibility
  2. position定位——让人又爱又恨的属性
  3. 兼容IE与firefox的css 线性渐变(linear-gradient)
  4. 记一次phpstudy重启后Apache无法启动
  5. 在Atom中运行脚本
  6. 读书笔记《集体智慧编程》Chapter 5 : Optimization
  7. varnish-cache使用
  8. Lync Server 2010标准版系列PART6:启用Lync
  9. ORA-12514: TNS:监听程序当前无法识别连接描述符中请(转)
  10. pandas操作sql数据库