1. 创建session和描述表
one.py内容如下:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:fw123456@localhost/testdb1'
//1. 数据库的用户和密码,数据库库testdb1
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
//2. 描述表的成员
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.username
使用步骤:
- 创建数据库会话,通过用户名和密码,数据库名。
- 通过class描述表User,然后描述表User,成员。
2. 创建表
在python交互语言中创建表。
>>> from one import db;
/home/tom/work/virtualenvs/upgrade-platform-p2-7-5/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py:839: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning.
'SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and '
>>> db.create_all()
/home/tom/work/virtualenvs/upgrade-platform-p2-7-5/lib/python2.7/site-packages/psycopg2/__init__.py:144: UserWarning: The psycopg2 wheel package will be renamed from release 2.8; in order to keep installing from binary please use "pip install psycopg2-binary" instead. For details see: <http://initd.org/psycopg/docs/install.html#binary-install-from-pypi>.
""")
使用 步骤:
- db.create_all()创建表User
在postgresql命令行中,可以看见创建的User表
testdb2=# \d user
Table "public.user"
Column | Type | Collation | Nullable | Default
----------+------------------------+-----------+----------+----------------------------------
id | integer | | not null | nextval('user_id_seq'::regclass)
username | character varying(80) | | |
email | character varying(120) | | |
Indexes:
"user_pkey" PRIMARY KEY, btree (id)
"user_email_key" UNIQUE CONSTRAINT, btree (email)
"user_username_key" UNIQUE CONSTRAINT, btree (username)
3. 向表插值
>>> admin = User('admin', 'admin@example.com')
>>> guest = User('guest', 'guest@example.com')
>>> db.session.add(admin) //session添加数据
>>> db.session.add(guest)
>>> db.session.commit() //commit提交数据
在postgresql中通过SELECT查询User,查询不到,数据应该以其他格式存在user_id_seq.
testdb2=# select * FROM user;
user
----------
postgres
(1 row)
4. 查询table数据
>>> users = User.query.all()
>>> admin = User.query.filter_by(username='admin').first()
>>> print admin
<User u'admin'>
>>> print users
[<User u'admin'>, <User u'guest'>]
User.query.all()函数是查询表中说有数据,print users输出[<User u’admin’>, <User u’guest’>]中的User是指的是User表结构。
其他
Python文件(.py)就是一个模块,可以直接用import导入
比如,one.py,就可以import one
from 模块名 import xxx ,xxx可以是类,函数,常量等等
比如想用one.py中的db变量
比如one.py内容如下:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:fw123456@localhost/testdb1'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.username
想使用db变量则
>>> from one import db
/home/tom/work/virtualenvs/upgrade-platform-p2-7-5/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py:839: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning.
'SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and '
>>> db.create_all()
/home/tom/work/virtualenvs/upgrade-platform-p2-7-5/lib/python2.7/site-packages/psycopg2/__init__.py:144: UserWarning: The psycopg2 wheel package will be renamed from release 2.8; in order to keep installing from binary please use "pip install psycopg2-binary" instead. For details see: <http://initd.org/psycopg/docs/install.html#binary-install-from-pypi>.
""")