• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共46篇

    python3.X - Web - Flask1.1.1

关闭

返回栏目

关闭

返回python3.X - Web - Flask1.1.1栏目

36 - Flask - 扩展 - SQLAlchemy - 准备

作者:

贺及楼

成为作者

更新日期:2024-12-21 19:43:36

Flask - 扩展 - SQLAlchemy - 准备

python3安装库

  1. pip install flask-sqlalchemy

连接mysql:

  1. pip install flask-mysqldb

安装了这个就可以在pip看见Flask-MySQLdb,可以导入import pymysqlcreate_app()就可以使用db.init_app(app),就可以使用mysql了,如果没有安装会报ModuleNotFoundError: No module named 'MySQLdb'这里超级超级无敌坑

python2安装库

  1. pip install flask-sqlalchemy

连接mysql:

  1. pip install flask-pymysql

小疑问:

flask_sqlalchemy和sqlalchemy的区别有哪些?
SQLAlchemy是python社区使用最广泛的ORM之一,SQL-Alchmy直译过来就是SQL炼金术。
Flask-SQLAlchemy集成了SQLAlchemy

python2引入

  1. from flask.ext.sqlalchemy impot SQLAlchemy

python3引入

  1. 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 一组字符串

数据库类型设计db.XXX

  1. from sqlalchemy.dialects.postgresql import JSON
  2. class Data(db.Model):
  3. __tablename__ = "datas"
  4. id = db.Column(db.Integer, primary_key=True)
  5. smallInteger = db.Column(db.SmallInteger)
  6. bigInteger = db.Column(db.BigInteger)
  7. floatData = db.Column(db.Float(10))
  8. numericData = db.Column(db.Numeric(10))
  9. stringData = db.Column(db.String(250))
  10. textData = db.Column(db.Text(200))
  11. mediumText = db.Column(db.Text(65536))
  12. longText = db.Column(db.Text(16777216))
  13. largeBinary = db.Column(db.LargeBinary(300))
  14. mediumBlob = db.Column(db.LargeBinary(65536))
  15. longBlob = db.Column(db.LargeBinary(16777216))
  16. pickle = db.Column(db.PickleType)
  17. mediumPickle = db.Column(db.PickleType(65536))
  18. longPickle = db.Column(db.PickleType(16777216))
  19. unicodeData = db.Column(db.Unicode(10))
  20. unicodeText = db.Column(db.UnicodeText)
  21. booleanData = db.Column(db.Boolean(0))
  22. dateData = db.Column(db.Date)
  23. timeData = db.Column(db.Time)
  24. dateTime = db.Column(db.DateTime)
  25. interval = db.Column(db.Interval)
  26. enumData = db.Column(db.Enum('father', 'mother'))
  27. tags = db.Column(JSON) # 对应mysql是JSON,查出来是dict直接用不需要json.loads()
  28. def __repr__(self):
  29. return "Data {}".format(self.id)