@1kbfree
        
        2018-05-16T15:11:54.000000Z
        字数 2818
        阅读 1391
    flask
数据库是一个网站的基础,在Flask中可以自由的使用MySQL、PostgreSQL、SQLite、Redis、MongoDB来写原生的语句实现功能,也可以使用更高级别的数据库抽象方式,如SQLAlchemy或MongoEngine这样的OR(D)M。
linux,通过命令sudo apt-get install mysql-server libmysqlclient-dev -yq进行下载安装。MySQLdb是用Python来操作mysql的包,因此通过pip来安装,命令如下:pip install mysql-python。SQLAlchemy是一个数据库的ORM框架,我们在后面会用到。安装命令为:pip install SQLAlchemy。创建数据库字段以及增删改查操作:
config.py:
'''数据库格式要写成这样:dialect+driver://username:password@host:port/database?charset=utf8'''DIALECT = 'mysql' #选择使用mysql数据库DRIVER = 'mysqldb' #驱动是mysqldbUSERNAME = 'root' #mysql登录的账号password = 'root' #mysql登录的密码HOST = '127.0.0.1' #地址,默认是127.0.0.1也可以输入localhostPORT = '3306' #mysql的端口号 如果没有修改默认是3306DATABASE = 'flask_db' #数据库名称# 开始拼接成要求的格式SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT,DRIVER,USERNAME,password,HOST,PORT,DATABASE) #一定要 SQLALCHEMY_DATABASE_URI 这个变量名
test1.py:
from flask import Flask, render_template, url_forfrom flask_sqlalchemy import SQLAlchemyimport configapp = Flask(__name__)app.config.from_object(config)db = SQLAlchemy(app)class flaskdb(db.Model):__tablename__ = 'flaskdb' # 表名id = db.Column(db.Integer, primary_key=True, autoincrement=True) # 创建一个字段为id,表示为主键,并且自增长title = db.Column(db.String(100), nullable=True) # 创建一个字符型字段,最多可容纳100个字,可以为空content = db.Column(db.Text, nullable=True) # 创建一个Text字段,可以为空# db.create_all() #会在flask_db这个数据库里创建一个flaskdb(上面定义的类)表@app.route('/')def index():'''# 增# 填写添加内容:rel = flaskdb(title='title1', content='title1_content')# 添加内容到数据库:db.session.add(rel)# 事物处理db.session.commit()''''''# 查rel = flaskdb.query.filter( flaskdb.title == 'title1' ).first() #查询flaskdb这个表里面title为title1的那一条数据print(rel.title) #打印查询到的titleprint(rel.content) #打印查询到的content''''''# 改# 首先找到要改的数据rel = flaskdb.query.filter( flaskdb.title == 'title1' ).first() #查询flaskdb这个表里面title为title1的那一条数据# 修改找到的那条数据的titlerel.title = 'new title1'# 事物处理db.session.commit()''''''# 删# 首先找到要删的数据rel = flaskdb.query.filter( flaskdb.title == 'new title1' ).first() #查询flaskdb这个表里面title为title1的那一条数据# 删除db.session.delete( rel )# 事物处理db.session.commit()'''return "hello"if __name__ == '__main__':app.run(debug=True, host='127.0.0.1', port=80)
创建一个文章表关联用户表:
class Users( db.Model ): #用户表__tablename__ = 'users'id = db.Column( db.Integer, primary_key=True, autoincrement=True ) # 创建一个字段为id,表示为主键,并且自增长username = db.Column( db.String( 11 ),nullable = False )class Article( db.Model ): #文章表__tablename__ = 'article'id = db.Column( db.Integer, primary_key=True, autoincrement=True ) # 创建一个字段为id,表示为主键,并且自增长title = db.Column( db.String( 100 ),nullable = False )content = db.Column( db.Text,nullable = False )author_id = db.Column( db.Integer,db.ForeignKey( 'users.id' ) )
查询某篇文章的作者:
# 找到title为title_iamfree1的作者# 首先找到title为title_iamfree1的文章:article = Article.query.filter( Article.title == 'title_iamfree1' ).first()# 把查询到的文章的author_id与Users表的id进行查询,查询到的就是作者的名称author_name = Users.query.filter( Users.id == article.author_id ).first()return 'hellow %s'%author_name.username