SQLAlchemy使用

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

使用步骤:

  1. 创建数据库会话,通过用户名和密码,数据库名。
  2. 通过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>.
  """)

使用 步骤:

  1. 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', '[email protected]')
>>> guest = User('guest', '[email protected]')
>>> 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>.
  """)

参考

flask插件系列之SQLAlchemy基础使用
SQLAlchemy快速入门

发布了112 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/chengbeng1745/article/details/103433119