eclipse连接mysql_专题一、flask构建mysql数据库正确姿势
應用程序最核心的就是數據,每天我們寫程序其實也是在處理數據的過程,那么很有必要系統性的講講和梳理python的flask框架是如何進行數據交互操作的。
趁這3天假期,分4篇內容來系統的講講,今天先分享第一篇。
一、flask構建mysql數據庫的正確姿勢。
二、flask常用的增刪改查用法。
三、flask數據的一對多和多對多的關聯查詢。
四、flask實戰的遷移數據庫
1、SQLAlchemy
Flask中最方便用的數據庫框架是 flask_sqlalchamy,是對 SQLAlchamy 在 Flask 中的擴展, SQLAlchemy 是一個 Python 數據庫工具(ORM,即對象關系映射)。
使用擴展包flask-sqlalchemy來操作數據庫(增刪改查),通過 Python 對象來操作數據庫,在舍棄一些性能開銷的同時,換來的是開發效率的較大提升。可以讓我們操作數據庫跟操作對象是一樣的,非常方便,因為一個表就抽象成一個類,一條數據就抽象成該類的一個對象。
2、安裝
pip install flask_sqlalchamy
安裝之后,導入到項目中,對應用進行初始化:
from flask_sqlalchamy import SQLAlchamy ?# 導入 SQLAlachamy
3、連接數據庫
最常用的是mysql,最好的方式是寫在configure里面,然后在flask的app主文件中通過app.config.from_object(configure)加載即可。
#配置mysql數據庫
DIALECT = 'mysql' # 要用的什么數據庫
DRIVER = 'pymysql' # 連接數據庫驅動
USERNAME = 'root'
PASSWORD = 'XXXX'
HOST = 'XXXXX'
PORT = '3306'
DATABASE = 'hutong'
SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT,DATABASE)
數據庫的其他配置
| 名字 | 備注 |
| SQLALCHEMY_DATABASE_URI | 用于連接的數據庫 URI 。例如:sqlite:tmp/test.dbmysql://username:password@server/db |
| SQLALCHEMY_BINDS | 一個映射 binds 到連接 URI 的字典。更多 binds 的信息見用 Binds 操作多個數據庫。 |
| SQLALCHEMY_ECHO | 如果設置為Ture, SQLAlchemy 會記錄所有 發給 stderr 的語句,這對調試有用。(打印sql語句) |
| SQLALCHEMY_RECORD_QUERIES | 可以用于顯式地禁用或啟用查詢記錄。查詢記錄 在調試或測試模式自動啟用。更多信息見get_debug_queries()。 |
| SQLALCHEMY_NATIVE_UNICODE | 可以用于顯式禁用原生 unicode 支持。當使用 不合適的指定無編碼的數據庫默認值時,這對于 一些數據庫適配器是必須的(比如 Ubuntu 上 某些版本的 PostgreSQL )。 |
| SQLALCHEMY_POOL_SIZE | 數據庫連接池的大小。默認是引擎默認值(通常 是 5 ) |
| SQLALCHEMY_POOL_TIMEOUT | 設定連接池的連接超時時間。默認是 10 。 |
| SQLALCHEMY_POOL_RECYCLE | 多少秒后自動回收連接。這對 MySQL 是必要的, 它默認移除閑置多于 8 小時的連接。注意如果 使用了 MySQL , Flask-SQLALchemy 自動設定 這個值為 2 小時。 |
4、構建模型
假設需要構建一張表Article,如下,新建單獨一個python文件,放在models目錄下,使用Flask-SQLAlchemy創建模型與表的映射:
模型需要繼承自db.Model,然后需要映射到表中的屬性,必須寫成db.Column的數據類型。該類繼承自db.Model,__tablename__代表表名,不寫的話默認類名的小寫字母為表名。然后再是依次每個表字段的定義。
常用的SQLAlchemy字段類型
| 類型名 | python中類型 | 說明 |
| Integer | int | 普通整數,一般是32位 |
| SmallInteger | int | 取值范圍小的整數,一般是16位 |
| BigInteger | int或long | 不限制精度的整數 |
| Float | float | 浮點數 |
| Numeric | decimal.Decimal | 普通整數,一般是32位 |
| String | str | 變長字符串 |
| Text | str | 變長字符串,對較長或不限長度的字符串做了優化 |
| Unicode | unicode | 變長Unicode字符串 |
| UnicodeText | unicode | 變長Unicode字符串,對較長或不限長度的字符串做了優化 |
| Boolean | bool | 布爾值 |
| Date | datetime.date | 時間 |
| Time | datetime.datetime | 日期和時間 |
| LargeBinary | str | 二進制文件 |
常用的SQLAlchemy列選項
| 選項名 | 說明 |
| primary_key | 如果為True,代表表的主鍵 |
| unique | 如果為True,代表這列不允許出現重復的值 |
| index | 如果為True,為這列創建索引,提高查詢效率 |
| nullable | 如果為True,允許有空值,如果為False,不允許有空值 |
| autoincrement | 代表的是這個主鍵為自增長的。 |
| default | 為這列定義默認值 |
Flask中使用flask-sqlalchemy時db.create_all()無法創建表
1、導入from flask_demo.models import Role, User ?# 導入模型類
2、添加應用上下文
3、with app.app_context():
4、db.create_all()
即可輕松新建數據表,當然數據庫需要提前建好。
分享也是自我的一次提升
阿里面試/崗位交流
免費領取例子腳本和代碼
免費PMP考試資料
免費python學習資料
掃一掃,加小T
專題推薦
●?jmeter實時可視化圖表化(高級)
●?jmeter5.0源碼在eclipse正確打開方式
●?jmeter+Jenkins性能測試自動化搭建
●?jmeter+Jenkins性能測試高級用法(番外篇)
●?jmeter的websocket接口性能測試
●?jmeter工作實戰心法-高級需求(附福利)
●?jmeter工作實戰心法-必備技能(附贈小技巧)
●?jmeter測試mongodb,必會,高級知識
●?jmeter?tcp腳本的核心知識點理解
●?jmeter?beanshell腳本如何編寫2個例子
●?jmeter?如何一步步擴展自己的函數
●?jmeter?正則表達式應用
●?新人如何學習性能測試
●?性能測試利劍-微服務的分布式追蹤
●?python如何和java高效的交互
總結
以上是生活随笔為你收集整理的eclipse连接mysql_专题一、flask构建mysql数据库正确姿势的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《暗黑三国》技能升级技巧
- 下一篇: mysql特性举例_MySQL事务的四大