
pip install flask-sqlalchemy
连接mysql:
pip install flask-mysqldb
安装了这个就可以在pip看见Flask-MySQLdb,可以导入import pymysql,create_app()就可以使用db.init_app(app),就可以使用mysql了,如果没有安装会报ModuleNotFoundError: No module named 'MySQLdb'这里超级超级无敌坑
pip install flask-sqlalchemy
连接mysql:
pip install flask-pymysql
flask_sqlalchemy和sqlalchemy的区别有哪些?
SQLAlchemy是python社区使用最广泛的ORM之一,SQL-Alchmy直译过来就是SQL炼金术。
Flask-SQLAlchemy集成了SQLAlchemy
from flask.ext.sqlalchemy impot SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
| 类型名 | MySQL类型 | python类型 | 描述 |
|---|---|---|---|
| SmallInteger | smallint | int | 取值范围较小,一般为16位 |
| Integer | int | int | 普通整数,一般32位 |
| BigInteger | bigint | int/long | 不限精度的整数 |
| Float | float | float | 浮点数 |
| Numeric | decimal | decimal.Decimal | 定点数 |
| String | varchar | str | 变长字符串 |
| Text | tinytext | str | 变长字符串,64K,2 16 − 1 2^{16}-12 16 −1=65535bytes |
| Text(65536) | mediumtext | str | 变长字符串,max16M,2 24 − 1 2^{24}-12 24 −1=16777215bytes |
| Text(16777216) | longtext | str | 变长字符串,max32M,2 32 − 1 2^{32}-12 32 −1=4294967295bytes |
| LargeBinary | blob | str | 二进制文件,64K |
| LargeBinary(65536) | mediumblob | str | 二进制,max16M |
| LargeBinary(16777216) | longblob | str | 二进制,max32M |
| PickleType | blob | 任何python对象 | 自动使用Pickle序列化,只有blob |
| Unicode | varchar | unicode | 变长字符串 |
| UnicodeText | text | unicode | 变长字符串,64K |
| Boolean | tinyint | bool | 布尔值 |
| Date | date | datetime.date | 日期 |
| Time | time | date.time | 时间 |
| DateTime | datetime | datetime.datetime | 日期和时间 |
| Interval | datetime | datetime.timedelta | 时间间隔 |
| Enum | enum | str | 一组字符串 |
from sqlalchemy.dialects.postgresql import JSONclass Data(db.Model):__tablename__ = "datas"id = db.Column(db.Integer, primary_key=True)smallInteger = db.Column(db.SmallInteger)bigInteger = db.Column(db.BigInteger)floatData = db.Column(db.Float(10))numericData = db.Column(db.Numeric(10))stringData = db.Column(db.String(250))textData = db.Column(db.Text(200))mediumText = db.Column(db.Text(65536))longText = db.Column(db.Text(16777216))largeBinary = db.Column(db.LargeBinary(300))mediumBlob = db.Column(db.LargeBinary(65536))longBlob = db.Column(db.LargeBinary(16777216))pickle = db.Column(db.PickleType)mediumPickle = db.Column(db.PickleType(65536))longPickle = db.Column(db.PickleType(16777216))unicodeData = db.Column(db.Unicode(10))unicodeText = db.Column(db.UnicodeText)booleanData = db.Column(db.Boolean(0))dateData = db.Column(db.Date)timeData = db.Column(db.Time)dateTime = db.Column(db.DateTime)interval = db.Column(db.Interval)enumData = db.Column(db.Enum('father', 'mother'))tags = db.Column(JSON) # 对应mysql是JSON,查出来是dict直接用不需要json.loads()def __repr__(self):return "Data {}".format(self.id)