[关闭]
@1kbfree 2018-05-16T23:11:54.000000Z 字数 2818 阅读 1130

6. 数据库操作

flask


数据库是一个网站的基础,在Flask中可以自由的使用MySQL、PostgreSQL、SQLite、Redis、MongoDB来写原生的语句实现功能,也可以使用更高级别的数据库抽象方式,如SQLAlchemy或MongoEngine这样的OR(D)M。

安装对应的包:


创建数据库字段以及增删改查操作:

config.py:

  1. '''
  2. 数据库格式要写成这样:
  3. dialect+driver://username:password@host:port/database?charset=utf8
  4. '''
  5. DIALECT = 'mysql' #选择使用mysql数据库
  6. DRIVER = 'mysqldb' #驱动是mysqldb
  7. USERNAME = 'root' #mysql登录的账号
  8. password = 'root' #mysql登录的密码
  9. HOST = '127.0.0.1' #地址,默认是127.0.0.1也可以输入localhost
  10. PORT = '3306' #mysql的端口号 如果没有修改默认是3306
  11. DATABASE = 'flask_db' #数据库名称
  12. # 开始拼接成要求的格式
  13. SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT,DRIVER,USERNAME,password,HOST,PORT,DATABASE) #一定要 SQLALCHEMY_DATABASE_URI 这个变量名

test1.py:

  1. from flask import Flask, render_template, url_for
  2. from flask_sqlalchemy import SQLAlchemy
  3. import config
  4. app = Flask(__name__)
  5. app.config.from_object(config)
  6. db = SQLAlchemy(app)
  7. class flaskdb(db.Model):
  8. __tablename__ = 'flaskdb' # 表名
  9. id = db.Column(db.Integer, primary_key=True, autoincrement=True) # 创建一个字段为id,表示为主键,并且自增长
  10. title = db.Column(db.String(100), nullable=True) # 创建一个字符型字段,最多可容纳100个字,可以为空
  11. content = db.Column(db.Text, nullable=True) # 创建一个Text字段,可以为空
  12. # db.create_all() #会在flask_db这个数据库里创建一个flaskdb(上面定义的类)表
  13. @app.route('/')
  14. def index():
  15. '''
  16. # 增
  17. # 填写添加内容:
  18. rel = flaskdb(title='title1', content='title1_content')
  19. # 添加内容到数据库:
  20. db.session.add(rel)
  21. # 事物处理
  22. db.session.commit()
  23. '''
  24. '''
  25. # 查
  26. rel = flaskdb.query.filter( flaskdb.title == 'title1' ).first() #查询flaskdb这个表里面title为title1的那一条数据
  27. print(rel.title) #打印查询到的title
  28. print(rel.content) #打印查询到的content
  29. '''
  30. '''
  31. # 改
  32. # 首先找到要改的数据
  33. rel = flaskdb.query.filter( flaskdb.title == 'title1' ).first() #查询flaskdb这个表里面title为title1的那一条数据
  34. # 修改找到的那条数据的title
  35. rel.title = 'new title1'
  36. # 事物处理
  37. db.session.commit()
  38. '''
  39. '''
  40. # 删
  41. # 首先找到要删的数据
  42. rel = flaskdb.query.filter( flaskdb.title == 'new title1' ).first() #查询flaskdb这个表里面title为title1的那一条数据
  43. # 删除
  44. db.session.delete( rel )
  45. # 事物处理
  46. db.session.commit()
  47. '''
  48. return "hello"
  49. if __name__ == '__main__':
  50. app.run(debug=True, host='127.0.0.1', port=80)

flask创建字段

创建一个文章表关联用户表:

  1. class Users( db.Model ): #用户表
  2. __tablename__ = 'users'
  3. id = db.Column( db.Integer, primary_key=True, autoincrement=True ) # 创建一个字段为id,表示为主键,并且自增长
  4. username = db.Column( db.String( 11 ),nullable = False )
  5. class Article( db.Model ): #文章表
  6. __tablename__ = 'article'
  7. id = db.Column( db.Integer, primary_key=True, autoincrement=True ) # 创建一个字段为id,表示为主键,并且自增长
  8. title = db.Column( db.String( 100 ),nullable = False )
  9. content = db.Column( db.Text,nullable = False )
  10. author_id = db.Column( db.Integer,db.ForeignKey( 'users.id' ) )

查询某篇文章的作者:

  1. # 找到title为title_iamfree1的作者
  2. # 首先找到title为title_iamfree1的文章:
  3. article = Article.query.filter( Article.title == 'title_iamfree1' ).first()
  4. # 把查询到的文章的author_id与Users表的id进行查询,查询到的就是作者的名称
  5. author_name = Users.query.filter( Users.id == article.author_id ).first()
  6. return 'hellow %s'%author_name.username
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注