python3如何使用mysql_python3怎么用sqlalchemy操作mysql
第一步 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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python红色的颜色表达式_50行Py
- 下一篇: python 编程该看那些书籍_我用py