{"id":990,"date":"2015-09-27T00:16:39","date_gmt":"2015-09-26T16:16:39","guid":{"rendered":"http:\/\/switch.linesno.com\/?p=990"},"modified":"2015-09-27T00:16:39","modified_gmt":"2015-09-26T16:16:39","slug":"flask-sqlalchemy-%e5%ad%a6%e4%b9%a0","status":"publish","type":"post","link":"http:\/\/switch.linesno.com\/?p=990","title":{"rendered":"Flask-SQLAlchemy \u5b66\u4e60"},"content":{"rendered":"<p>Flask-SQLALchemy \u662f\u4e00\u4e2a\u7ed9\u4f60\u7684\u5e94\u7528\u6dfb\u52a0 SQLALchemy \u652f\u6301\u7684 Flask \u6269\u5c55\u3002SQLALchemy \u662fPython\u8bed\u8a00\u7684SQL\u5de5\u5177\u5305\u53ca\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\uff08ORM\uff09\u5de5\u5177\uff0c\u4f7f\u7528MIT\u8bb8\u53ef\u8bc1\u53d1\u884c\uff0c\u63d0\u4f9b\u80fd\u517c\u5bb9\u4f17\u591a\u6570\u636e\u5e93\uff08\u5982 SQLite\u3001MySQL\u3001Postgres\u3001Oracle\u3001MS-SQL\u3001SQLServer \u548c Firebird\uff09\u7684\u4f01\u4e1a\u7ea7\u6301\u4e45\u6027\u6a21\u578b\u3002<br \/>\n<span id=\"more-581\"><\/span><\/p>\n<h4>\u4e00\u3001\u4e3a\u4f60\u7684Flask\u5e94\u7528\u52a0\u8f7dFlask-SqlAlchemy\u6269\u5c55<\/h4>\n<div>\n<div id=\"highlighter_148474\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python keyword\">from<\/code> <code class=\"python plain\">flask <\/code><code class=\"python keyword\">import<\/code> <code class=\"python plain\">Flask<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python keyword\">from<\/code> <code class=\"python plain\">flask.ext.sqlalchemy <\/code><code class=\"python keyword\">import<\/code> <code class=\"python plain\">SQLAlchemy<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"python plain\">app <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">Flask(__name__)<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"python plain\">app.config[<\/code><code class=\"python string\">'SQLALCHEMY_DATABASE_URI'<\/code><code class=\"python plain\">] <\/code><code class=\"python keyword\">=<\/code> <code class=\"python string\">'sqlite:\/\/\/\/tmp\/test.db'<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"python plain\">db <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">SQLAlchemy(app)\u00a0 <\/code><code class=\"python comments\">#\u8fd9\u4e2a\u5c31\u662f\u4f60\u4ee5\u540e\u64cd\u4f5c\u6570\u636e\u5e93\u7684\u5bf9\u8c61\u5b9e\u4f8b\u4e86<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>SQLALCHEMY_DATABASE_URI\u683c\u5f0f\u5b9e\u4f8b\uff1a<\/p>\n<blockquote><p>postgresql:\/\/scott:tiger@localhost\/mydatabase<br \/>\nmysql:\/\/scott:tiger@localhost\/mydatabase<br \/>\noracle:\/\/scott:tiger@127.0.0.1:1521\/sidname<br \/>\nsqlite:\/\/\/\/absolute\/path\/to\/foo.db #\u6ce8\u610f\uff1a\u67093\u4e2a\u659c\u6760+\u8def\u5f84<\/p><\/blockquote>\n<h4>\u4e8c\u3001\u5efa\u7acb\u6570\u636e\u5e93\u6a21\u578b\u548c\u521d\u59cb\u5316\u6570\u636e\u5e93<\/h4>\n<p>\u5efa\u7acb\u6570\u636e\u5e93\u6a21\u578b\uff1a<\/p>\n<div>\n<div id=\"highlighter_130519\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python keyword\">import<\/code> <code class=\"python plain\">hashlib<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python keyword\">from<\/code> <code class=\"python plain\">app <\/code><code class=\"python keyword\">import<\/code> <code class=\"python plain\">db\u00a0 <\/code><code class=\"python comments\">#\u5728\u6570\u636e\u5e93\u6a21\u578b\u6587\u4ef6\u4e2d\u5bfc\u5165\u4e0a\u9762\u5efa\u7acb\u7684db\u5bf9\u8c61<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"python keyword\">class<\/code> <code class=\"python plain\">User(db.Model):<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python functions\">id<\/code> <code class=\"python keyword\">=<\/code> <code class=\"python plain\">db.Column(db.Integer, primary_key<\/code><code class=\"python keyword\">=<\/code><code class=\"python color1\">True<\/code><code class=\"python plain\">)\u00a0 <\/code><code class=\"python comments\"># id<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">username <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">db.Column(db.String(<\/code><code class=\"python value\">80<\/code><code class=\"python plain\">), unique<\/code><code class=\"python keyword\">=<\/code><code class=\"python color1\">True<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">email <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">db.Column(db.String(<\/code><code class=\"python value\">320<\/code><code class=\"python plain\">), unique<\/code><code class=\"python keyword\">=<\/code><code class=\"python color1\">True<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">password <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">db.Column(db.String(<\/code><code class=\"python value\">32<\/code><code class=\"python plain\">), nullable<\/code><code class=\"python keyword\">=<\/code><code class=\"python color1\">False<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python keyword\">def<\/code> <code class=\"python plain\">__init__(<\/code><code class=\"python color1\">self<\/code><code class=\"python plain\">, username, email, password):<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python color1\">self<\/code><code class=\"python plain\">.username <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">username<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python color1\">self<\/code><code class=\"python plain\">.email <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">email<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python color1\">self<\/code><code class=\"python plain\">.password<\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">hashlib.md5(password)\u00a0 <\/code><code class=\"python comments\">#\u5475\u5475\uff0c\u8fd9\u6837\u5728\u63d2\u5165\u6570\u636e\u81ea\u52a8\u7ed9\u5bc6\u7801\u54c8\u5e0c\u4e86\uff01<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python keyword\">def<\/code> <code class=\"python plain\">__repr__(<\/code><code class=\"python color1\">self<\/code><code class=\"python plain\">):<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python keyword\">return<\/code> <code class=\"python string\">\"&lt;User '{:s}'&gt;\"<\/code><code class=\"python plain\">.<\/code><code class=\"python functions\">format<\/code><code class=\"python plain\">(<\/code><code class=\"python color1\">self<\/code><code class=\"python plain\">.username)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u521d\u59cb\u5316\u6570\u636e\u5e93\u4e5f\u7279\u522b\u7b80\u5355\uff0c\u53ea\u9700\u8981\u8c03\u7528 db.create_all() \u51fd\u6570\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n<div>\n<div id=\"highlighter_107718\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python keyword\">if<\/code> <code class=\"python plain\">__name__ <\/code><code class=\"python keyword\">=<\/code><code class=\"python keyword\">=<\/code> <code class=\"python string\">'__main__'<\/code><code class=\"python plain\">:<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">db.create_all()<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h4>\u4e09\u3001\u63d2\u5165\u6570\u636e<\/h4>\n<div>\n<div id=\"highlighter_79526\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python plain\">u <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">User(username<\/code><code class=\"python keyword\">=<\/code><code class=\"python string\">'peter'<\/code><code class=\"python plain\">, email<\/code><code class=\"python keyword\">=<\/code><code class=\"python string\">'test@example.com'<\/code><code class=\"python plain\">, password<\/code><code class=\"python keyword\">=<\/code><code class=\"python string\">'123456'<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python plain\">db.session.add(u)\u00a0 <\/code><code class=\"python comments\">#\u63d2\u5165\u6570\u636e<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"python plain\">db.session.commit()\u00a0 <\/code><code class=\"python comments\">#\u53ea\u6709\u63d0\u4ea4\u4e8b\u52a1\u4e86\uff0c\u624d\u53ef\u4ee5\u83b7\u53d6(u.id)\u6570\u636e\u7684ID\u503c\u3002<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h4>\u56db\u3001\u67e5\u8be2\u6570\u636e<\/h4>\n<p>\u7528\u4e3b\u952e\u83b7\u53d6\u6570\u636e\uff1a<\/p>\n<div>\n<div id=\"highlighter_658949\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python plain\">User.query.get(<\/code><code class=\"python value\">1<\/code><code class=\"python plain\">)<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python plain\">&lt;User u<\/code><code class=\"python string\">'admin'<\/code><code class=\"python plain\">&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u901a\u8fc7\u4e00\u4e2a\u7cbe\u786e\u53c2\u6570\u8fdb\u884c\u53cd\u67e5\uff1a<\/p>\n<div>\n<div id=\"highlighter_629789\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python plain\">peter <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">User.query.filter_by(username<\/code><code class=\"python keyword\">=<\/code><code class=\"python string\">'peter'<\/code><code class=\"python plain\">).first()\u00a0 <\/code><code class=\"python comments\">#\u6ce8\u610f\uff1a\u7cbe\u786e\u67e5\u8be2\u51fd\u6570query.filter_by()\uff0c\u662f\u901a\u8fc7\u4f20\u9012\u53c2\u6570\u8fdb\u884c\u67e5\u8be2\uff1b\u5176\u4ed6\u589e\u5f3a\u578b\u67e5\u8be2\u51fd\u6570\u662fquery.filter()\uff0c\u901a\u8fc7\u4f20\u9012\u8868\u8fbe\u5f0f\u8fdb\u884c\u67e5\u8be2\u3002<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python functions\">print<\/code><code class=\"python plain\">(peter.<\/code><code class=\"python functions\">id<\/code><code class=\"python plain\">)\u00a0 <\/code><code class=\"python comments\">#\u5982\u679c\u6570\u636e\u4e0d\u5b58\u5728\u5219\u8fd4\u56deNone<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u6a21\u7cca\u67e5\u8be2\uff1a<\/p>\n<div>\n<div id=\"highlighter_42580\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python plain\">User.query.<\/code><code class=\"python functions\">filter<\/code><code class=\"python plain\">(User.email.endswith(<\/code><code class=\"python string\">'@example.com'<\/code><code class=\"python plain\">)).<\/code><code class=\"python functions\">all<\/code><code class=\"python plain\">()<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python plain\">[&lt;User u<\/code><code class=\"python string\">'admin'<\/code><code class=\"python plain\">&gt;, &lt;User u<\/code><code class=\"python string\">'guest'<\/code><code class=\"python plain\">&gt;]<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u903b\u8f91\u975e1\uff1a<\/p>\n<div>\n<div id=\"highlighter_746821\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python plain\">peter <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">User.query.<\/code><code class=\"python functions\">filter<\/code><code class=\"python plain\">(User.username !<\/code><code class=\"python keyword\">=<\/code> <code class=\"python string\">'peter'<\/code><code class=\"python plain\">).first()<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python functions\">print<\/code><code class=\"python plain\">(peter.<\/code><code class=\"python functions\">id<\/code><code class=\"python plain\">)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u903b\u8f91\u975e2\uff1a<\/p>\n<div>\n<div id=\"highlighter_12477\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python keyword\">from<\/code> <code class=\"python plain\">sqlalchemy <\/code><code class=\"python keyword\">import<\/code> <code class=\"python plain\">not_<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python plain\">peter <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">User.query.<\/code><code class=\"python functions\">filter<\/code><code class=\"python plain\">(not_(User.username<\/code><code class=\"python keyword\">=<\/code><code class=\"python keyword\">=<\/code><code class=\"python string\">'peter'<\/code><code class=\"python plain\">)).first()<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"python functions\">print<\/code><code class=\"python plain\">(peter.<\/code><code class=\"python functions\">id<\/code><code class=\"python plain\">)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u903b\u8f91\u4e0e\uff1a<\/p>\n<div>\n<div id=\"highlighter_975206\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python keyword\">from<\/code> <code class=\"python plain\">sqlalchemy <\/code><code class=\"python keyword\">import<\/code> <code class=\"python plain\">and_<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python plain\">peter <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">User.query.<\/code><code class=\"python functions\">filter<\/code><code class=\"python plain\">(and_(User.username<\/code><code class=\"python keyword\">=<\/code><code class=\"python keyword\">=<\/code><code class=\"python string\">'peter'<\/code><code class=\"python plain\">, User.email.endswith(<\/code><code class=\"python string\">'@example.com'<\/code><code class=\"python plain\">))).first()<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"python functions\">print<\/code><code class=\"python plain\">(peter.<\/code><code class=\"python functions\">id<\/code><code class=\"python plain\">)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u903b\u8f91\u6216\uff1a<\/p>\n<div>\n<div id=\"highlighter_939985\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python keyword\">from<\/code> <code class=\"python plain\">sqlalchemy <\/code><code class=\"python keyword\">import<\/code> <code class=\"python plain\">or_<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python plain\">peter <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">User.query.<\/code><code class=\"python functions\">filter<\/code><code class=\"python plain\">(or_(User.username !<\/code><code class=\"python keyword\">=<\/code> <code class=\"python string\">'peter'<\/code><code class=\"python plain\">, User.email.endswith(<\/code><code class=\"python string\">'@example.com'<\/code><code class=\"python plain\">))).first()<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"python functions\">print<\/code><code class=\"python plain\">(peter.<\/code><code class=\"python functions\">id<\/code><code class=\"python plain\">)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h4>\u516d\u3001\u67e5\u8be2\u6570\u636e\u52a0\u5de5<\/h4>\n<p>\u6392\u5e8f\u548c\u9650\u5236\u51fd\u6570\u53ef\u4ee5\u8ddf\u5728query\u6216filter\u540e\u9762\u3002<br \/>\n\u6392\u5e8f\uff1a<\/p>\n<div>\n<div id=\"highlighter_962081\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python plain\">User.query.order_by(User.username)\u00a0 <\/code><code class=\"python comments\">#\u563f\u563f\uff0c\u4f60\u7528\u54ea\u4e2a\u5b57\u6bb5\u4f5c\u4e3a\u6392\u5e8f\u53c2\u8003\u5462\uff1f<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python plain\">[&lt;User u<\/code><code class=\"python string\">'admin'<\/code><code class=\"python plain\">&gt;, &lt;User u<\/code><code class=\"python string\">'guest'<\/code><code class=\"python plain\">&gt;, &lt;User u<\/code><code class=\"python string\">'peter'<\/code><code class=\"python plain\">&gt;]<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u9650\u5236\u8fd4\u56de\u7684\u6570\u76ee\uff1a<\/p>\n<div>\n<div id=\"highlighter_320308\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python plain\">User.query.limit(<\/code><code class=\"python value\">1<\/code><code class=\"python plain\">).<\/code><code class=\"python functions\">all<\/code><code class=\"python plain\">()<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python plain\">[&lt;User u<\/code><code class=\"python string\">'admin'<\/code><code class=\"python plain\">&gt;]<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h4>\u516d\u3001\u67e5\u8be2\u6570\u636e\u8fd4\u56de<\/h4>\n<p>\u8fd4\u56de\u67e5\u8be2\u5230\u7684\u7b2c\u4e00\u4e2a\u5bf9\u8c61\uff1a<\/p>\n<div>\n<div id=\"highlighter_223945\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python plain\">r <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">User.query.first()<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python functions\">print<\/code><code class=\"python plain\">(r)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u8fd4\u56de\u6240\u6709\u67e5\u8be2\u5230\u7684\u5bf9\u8c61\uff1a<\/p>\n<div>\n<div id=\"highlighter_690053\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python plain\">r <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">User.query.<\/code><code class=\"python functions\">all<\/code><code class=\"python plain\">()<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python functions\">print<\/code><code class=\"python plain\">(r)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h4>\u4e03\u3001\u5220\u9664\u6570\u636e<\/h4>\n<div>\n<div id=\"highlighter_630967\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python plain\">u <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">User.query.first()<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python plain\">db.session.delete(u)\u00a0 <\/code><code class=\"python comments\">#\u5220\u9664\u6570\u636e\u548c\u63d2\u5165\u6570\u636e\u4e00\u6837\u7b80\u5355\uff0c\u4f46\u5fc5\u987b\u662f\u901a\u8fc7\u67e5\u8be2\u8fd4\u56de\u7684\u5bf9\u8c61\u3002<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"python plain\">db.session.commit()<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h4>\u516b\u3001\u66f4\u65b0\u6570\u636e<\/h4>\n<div>\n<div id=\"highlighter_510178\" class=\"syntaxhighlighter  python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>Code example:<\/caption>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python plain\">u <\/code><code class=\"python keyword\">=<\/code> <code class=\"python plain\">User.query.first()<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python plain\">u.username <\/code><code class=\"python keyword\">=<\/code> <code class=\"python string\">'guest'<\/code>\u00a0 <code class=\"python comments\">#\u66f4\u65b0\u6570\u636e\u548c\u53d8\u91cf\u8d4b\u503c\u90a3\u4e48\u7b80\u5355\uff0c\u4f46\u5fc5\u987b\u662f\u901a\u8fc7\u67e5\u8be2\u8fd4\u56de\u7684\u5bf9\u8c61\u3002<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"python plain\">db.session.commit()<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Flask-SQLALchemy \u662f\u4e00\u4e2a\u7ed9\u4f60\u7684\u5e94\u7528\u6dfb\u52a0 SQLALchemy \u652f\u6301\u7684 Flask \u6269\u5c55\u3002SQL [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-990","post","type-post","status-publish","format-standard","hentry","category-bigdata"],"_links":{"self":[{"href":"http:\/\/switch.linesno.com\/index.php?rest_route=\/wp\/v2\/posts\/990","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/switch.linesno.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/switch.linesno.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/switch.linesno.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/switch.linesno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=990"}],"version-history":[{"count":1,"href":"http:\/\/switch.linesno.com\/index.php?rest_route=\/wp\/v2\/posts\/990\/revisions"}],"predecessor-version":[{"id":991,"href":"http:\/\/switch.linesno.com\/index.php?rest_route=\/wp\/v2\/posts\/990\/revisions\/991"}],"wp:attachment":[{"href":"http:\/\/switch.linesno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=990"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/switch.linesno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=990"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/switch.linesno.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=990"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}