第一步 python需要安装pymysql mysqldb不可用于python3

第二步使用 url链接 链接字符串 dialect+driver://username:password@host:port/database

在config中写配置

# 增加:

article1 = Article(title='aaa',content='bbb')

db.session.add(article1)

# 事务

db.session.commit()

# 查

# select * from article where article.title='aaa';

article1 = Article.query.filter(Article.title == 'aaa').first()

print 'title:%s' % article1.title

print 'content:%s' % article1.content

3. 改:

```

# 改:

# 1\. 先把你要更改的数据查找出来

article1 = Article.query.filter(Article.title == 'aaa').first()

# 2\. 把这条数据,你需要修改的地方进行修改

article1.title = 'new title'

# 3\. 做事务的提交

db.session.commit()

# 删

# 1\. 把需要删除的数据查找出来

article1 = Article.query.filter(Article.content == 'bbb').first()

# 2\. 把这条数据删除掉

db.session.delete(article1)

# 3\. 做事务提交

db.session.commit()

```

### Flask-SQLAlchemy外键及其关系:

1. 外键:

```

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'))

author = db.relationship('User',backref=db.backref('articles'))

```

2. `author = db.relationship('User',backref=db.backref('articles'))`解释:

* 给`Article`这个模型添加一个`author`属性,可以访问这篇文章的作者的数据,像访问普通模型一样。

* `backref`是定义反向引用,可以通过`User.articles`访问这个模型所写的所有文章。

3. 多对多:

* 多对多的关系,要通过一个中间表进行关联。

* 中间表,不能通过`class`的方式实现,只能通过`db.Table`的方式实现。

* 设置关联:`tags = db.relationship('Tag',secondary=article_tag,backref=db.backref('articles'))`需要使用一个关键字参数`secondary=中间表`来进行关联。

* 访问和数据添加可以通过以下方式进行操作:

* 添加数据:

```

article1 = Article(title='aaa')

article2 = Article(title='bbb')

tag1 = Tag(name='111')

tag2 = Tag(name='222')

article1.tags.append(tag1)

article1.tags.append(tag2)

article2.tags.append(tag1)

article2.tags.append(tag2)

db.session.add(article1)

db.session.add(article2)

db.session.add(tag1)

db.session.add(tag2)

db.session.commit()

```

* 访问数据:

```

article1 = Article.query.filter(Article.title == 'aaa').first()

tags = article1.tags

for tag in tags:

print tag.name

```

### Flask-Script的介绍与安装:

1. Flask-Script:Flask-Script的作用是可以通过命令行的形式来操作Flask。例如通过命令跑一个开发版本的服务器、设置数据库,定时任务等。

2. 安装:首先进入到虚拟环境中,然后`pip install flask-script`来进行安装。

3. 如果直接在主`manage.py`中写命令,那么在终端就只需要`python manage.py command_name`就可以了。

4. 如果把一些命令集中在一个文件中,那么在终端就需要输入一个父命令,比如`python manage.py db init`。

5. 例子:

```

from flask_script import Manager

from flask_script_demo import app

from db_scripts import DBManager

manager = Manager(app)

# 和数据库相关的操作,我都放在一起

@manager.command

def runserver():

print '服务器跑起来了!!!!!'

manager.add_command('db',DBManager)

if __name__ == '__main__':

manager.run()

```

6. 有子命令的例子:

```

#encoding: utf-8

from flask_script import Manager

DBManager = Manager()

@DBManager.command

def init():

print '数据库初始化完成'

@DBManager.command

def migrate():

print '数据表迁移成功'

```

### 分开`models`以及解决循环引用:

1. 分开models的目的:为了让代码更加方便的管理。

2. 如何解决循环引用:把`db`放在一个单独的文件中,切断循环引用的线条就可以了。

### Flask-Migrate的介绍与安装:

1. 介绍:因为采用`db.create_all`在后期修改字段的时候,不会自动的映射到数据库中,必须删除表,然后重新运行`db.craete_all`才会重新映射,这样不符合我们的需求。因此flask-migrate就是为了解决这个问题,她可以在每次修改模型后,可以将修改的东西映射到数据库中。

2. 首先进入到你的虚拟环境中,然后使用`pip install flask-migrate`进行安装就可以了。

3. 使用`flask_migrate`必须借助`flask_scripts`,这个包的`MigrateCommand`中包含了所有和数据库相关的命令。

4. `flask_migrate`相关的命令:

* `python manage.py db init`:初始化一个迁移脚本的环境,只需要执行一次。

* `python manage.py db migrate`:将模型生成迁移文件,只要模型更改了,就需要执行一遍这个命令。

* `python manage.py db upgrade`:将迁移文件真正的映射到数据库中。每次运行了`migrate`命令后,就记得要运行这个命令。

5. 注意点:需要将你想要映射到数据库中的模型,都要导入到`manage.py`文件中,如果没有导入进去,就不会映射到数据库中。

6. `manage.py`的相关代码:

```

from flask_script import Manager

from migrate_demo import app

from flask_migrate import Migrate,MigrateCommand

from exts import db

from models import Article

# init

# migrate

# upgrade

# 模型 -> 迁移文件 -> 表

manager = Manager(app)

# 1\. 要使用flask_migrate,必须绑定app和db

migrate = Migrate(app,db)

# 2\. 把MigrateCommand命令添加到manager中

manager.add_command('db',MigrateCommand)

if __name__ == '__main__':

manager.run()

```

python3如何使用mysql_python3怎么用sqlalchemy操作mysql相关推荐

  1. sqlalchemy mysql教程_python使用SQLAlchemy操作MySQL

    SQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行.SQLAlchemy首次发行于2006年2月,并迅速地在Python社 ...

  2. sqlalchemy mysql_使用SQLAlchemy操作MySQL

    SQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行.SQLAlchemy首次发行于2006年2月,并迅速地在Python社 ...

  3. 【tips】ORM - SQLAlchemy操作MySQL数据库

    优先(官方文档SQLAlchemy-version1.2): sqlalchemy | 作者:斯芬克斯 推荐一(长篇幅version1.2.0b3):python约会之ORM-sqlalchemy | ...

  4. FastAPI 结合 SQLAlchemy 操作 MySQL 数据库

    文章目录 1. 安装 SQLAlchemy 2. 创建数据库 3. SQLAlchemy 连接 MySQL 4. 创建数据模型 5. 创建 Pydantic 模型 6. crud 工具 7. main ...

  5. flask使用SQLAlchemy操作mysql

    2019独角兽企业重金招聘Python工程师标准>>> 注意:看这篇博客需要先看我之前写的一篇博客,在 https://my.oschina.net/zhuangweihong/bl ...

  6. 根据数据库表gengxin实体类_Python学习第四十八天记录打call:SQLALchemy操作MySQL关系型数据库...

    1.SQLALchemy使用 安装 pip install sqlalchemy: SQLAlchemy是Python编程语言下的一款开源软件,是PythonSQL工具包和对象关系映射器,它为应用程序 ...

  7. python propresql mysql_python数据库操作mysql:pymysql、sqlalchemy常见用法详解

    本文实例讲述了python数据库操作mysql:pymysql.sqlalchemy常见用法.分享给大家供大家参考,具体如下: 相关内容: 使用pymysql直接操作mysql 创建表 查看表 修改表 ...

  8. Python之Mysql及SQLAlchemy操作总结

    一.Mysql命令总结 1.创建库 create database test1; 2.授权一个用户 grant all privileges on *.* to 'feng'@'%' identifi ...

  9. sqlalchemy 使用mysql_使用SQLALchemy连接MySql数据库并进行操作

    "导语:这期主要学一下利用SQLALchemy连接MySql数据库以及对数据库的增删改查的操作,可能代码部分很多还不能理解,我觉得像一些固定写法先用着(比如引入的类等),再慢慢体会缘由&qu ...

最新文章

  1. 【Verilog HDL 训练】第 09 天(按键消抖)
  2. 窗口捕获显示黑屏_win10每次重启黑屏假死
  3. coreleft函数
  4. exp导出excel oracle_如何从Oracle快速导出数据到Excel
  5. OC-NSFileManager和NSFileHandle的使用
  6. c# 错误 两个输出文件名解析为同一个输出路径
  7. 递归入门 斐波那契数列
  8. 系统没有安装vc9.注意是x86 32位_Windows 软件默认安装位置之谜
  9. 03.Java语言基础
  10. 云尚发卡PHP,PHP云尚发卡系统V1.5.7源码,专门为个人或小型企业提供在线售卡
  11. python opencv读大华摄像头视频流实时移动侦测运动检测截图拍照保存
  12. 微型计算机登录密码忘记了怎么办,一种基于微型计算机的密码锁的制作方法
  13. 2015.11--360校招面试-后台C++开发工程师
  14. 【电脑常用办公软件】万彩办公大师教程丨截屏大师工具的应用
  15. 03JavaScript基础——数组、二维数组、数组方法
  16. 安卓最新版本_腾讯手机管家下载最新版本-腾讯手机管家2020新版本下载v8.8.1 安卓官方版...
  17. 进大厂一条龙服务(Java核心面试知识点+一线大厂Java笔试面试题+月薪3万Java优秀简历模板),看这篇就够了
  18. 信号归一化功率_线性调频(LFM)信号仿真分析
  19. 用DAEMON TOOLS打开rational ross 的bin文件并安装过程梳理
  20. 在mac上面运行cherrytree

热门文章

  1. Python 为了提升性能,竟运用了共享经济
  2. python是烂语言吗
  3. mysql怎么显示、查询现有数据库列表?(show databases;)怎么删除现有数据库?(drop database <库名>)
  4. python PyQt5 QLCDNumber类(用于显示数字或一些符号的容器)
  5. Intel Realsense D435报错 RuntimeError: MFCreateDeviceSource(_device_attrs, _source) returned: HResult
  6. linux下的ppp软件,linux下ppp拨号无线上网(示例代码)
  7. mysql8安装错误_Windows安装MySQL8.0.16 的步骤及出现错误问题解决方法
  8. 小麦盒子cdn_阿里云CDN入门使用配置
  9. Java 11都有哪些新特性?
  10. RGB565与RGB555位图文件格式的标志识别