Flask-SQLAlchemy安裝及設置


Flask-SQLAlchemy安裝及設置

  • SQLALchemy 實際上是對數據庫的抽象,讓開發者不用直接和 SQL 語句打交道,而是通過 Python 對象來操作數據庫,在舍棄一些性能開銷的同時,換來的是開發效率的較大提升
  • SQLAlchemy是一個關系型數據庫框架,它提供了高層的 ORM 和底層的原生數據庫的操作。flask-sqlalchemy 是一個簡化了 SQLAlchemy 操作的flask擴展。
  • 文檔地址:http://docs.jinkan.org/docs/flask-sqlalchemy

安裝

  • 安裝 flask-sqlalchemy
    pip install flask-sqlalchemy
  • 如果連接的是 mysql 數據庫,需要安裝 mysqldb
    pip install flask-mysqldb
    

數據庫連接設置

  • 在 Flask-SQLAlchemy 中,數據庫使用URL指定,而且程序使用的數據庫必須保存到Flask配置對象的 SQLALCHEMY_DATABASE_URI 鍵中
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/test'
    
  • 其他設置:
    # 動態追蹤修改設置,如未設置只會提示警告
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
    #查詢時會顯示原始SQL語句
    app.config['SQLALCHEMY_ECHO'] = True
  • 配置完成需要去 MySQL 中創建項目所使用的數據庫
    $ mysql -uroot -pmysql
    $ create database test charset utf8;
  • 其他配置
名字 備注
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 小時

連接其他數據庫

完整連接 URI 列表請跳轉到 SQLAlchemy 下面的文檔 (Supported Databases) 。這里給出一些 常見的連接字符串。

  • Postgres:
    postgresql://scott:tiger@localhost/mydatabase
  • MySQL:
    mysql://scott:tiger@localhost/mydatabase
  • Oracle:
    - oracle://scott:tiger@127.0.0.1:1521/sidname  
  • SQLite (注意開頭的四個斜線):
    sqlite:////absolute/path/to/foo.db  

常用的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,不允許有空值
default 為這列定義默認值

常用的SQLAlchemy關系選項

選項名 說明
backref 在關系的另一模型中添加反向引用
primary join 明確指定兩個模型之間使用的聯結條件
uselist 如果為False,不使用列表,而使用標量值
order_by 指定關系中記錄的排序方式
secondary 指定多對多關系中關系表的名字
secondary join 在SQLAlchemy中無法自行決定時,指定多對多關系中的二級聯結條件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM