文章目录
哈喽,大家好,我是有勇气的牛排(全网同名)🐮🐮🐮
有问题的小伙伴欢迎在文末评论,点赞、收藏是对我最大的支持!!!。
1 增
Customer为表名

try:
username = '123456'
customerInfo = Customer(username=username)
db.add(customerInfo)
db.commit()
except Exception as e:
db.rollback()
print(e)
2 删
@route('/professionDeleteType/<num>')
def professionDeleteType(db,num):
print(num)
try:
print('--------删除--------------')
print(num)
TypeNameInfo = db.query(Profession).filter(Profession.pid==int(num)).delete()
db.commit()
except Exception as e:
print(e)
return redirect('/profession')
3 改
Users表

try:
username = db.query(Users).filter_by(username=username).first()
username.nickname = Hnickname
username.img_url = Himg_url
db.commit()
except:
db.rollback()
print(e)
return json.dumps({'data': 0, 'info': '内部错误,请刷新!!!'})
4 基础查询
4.1 基础查询汇总
result = db.query(Users).all()
result = db.query(Users.uid, Users.username).all()
result = db.query(Users).filter_by(uid=17, username='666').all()
result = db.query(Users).filter(or_(
Users.uid >= 16,
Users.username == '666'
)).all()
4.2 限制查询
result = db.query(Users).limit(3).all()
result = db.query(Users).limit(3).offset(3).all()
limit
:查询多少条
offset
:偏移量 -> 3 表示从第4条开始
4.3 计数
select count(*) from users where ...
filter
:== >= < > != != in not
count = db.query(Users).filter(Users.uid > 16).count()
print(count)
4.4 去重
select distinct(openid) from users;
result = db.query(Users.openid).distinct(Users.openid).all()
print(result)
for row in result:
print(row.openid)
4.5 排序
select * from users order by uid desc;
result = db.query(Users).order_by(Users.uid.desc()).all()
4.6 模糊查询
select * from users where username like '%929%';
result = db.query(Users).filter(Users.username.like('%929%')).all()
4.7 分组查询
select * from users group by isAdmin;
result = db.query(Users).group_by(Users.openid).all()
result = db.query(Users).group_by(Users.openid).having(Users.uid > 2).all()
4.8 聚合函数
min
、max
、avg
、sum
select sum(u_dealNum) from users;
result = db.query(func.sum(Users.u_dealNum)).first()
print(result)
5 多表查询
5.1 内连接
查询发表过文章的 用户信息+文章信息
select a_title from users, article where users.uid=article.uid and article.a_id=1;
select a_title from article inner join users on users.uid=article.uid where article.a_id=1;
result = db.query(Article, Users).join(Users, Article.uid == Users.uid).filter(Article.a_id == 1).all()
print(result)
for article, users in result:
print(article.uid, article.a_title, users.username)
result = db.query(Article, Users.username).join(Users, Article.uid == Users.uid).filter(Article.a_id == 1).all()
print(result)
for article, username in result:
print(article.uid, article.a_title, username)
5.2 左外连接
查询所有用户 写的文章阅读量
select nickname,a_title,sum(a_pageviews) as total from users left join article on users.uid=article.uid group by users.uid having total>0;
result = db.query(Users.uid, Users.nickname, func.sum(Article.a_pageviews)).outerjoin(Article, Users.uid == Article.uid).group_by(Users.uid).all()
5.3 复杂查询
and和or混用
: username like 'charles' or uid>1 and nickname='导演'
result = db.query(Users).filter(
or_(Users.username.like('charles'), and_(Users.uid > 1, Users.nickname == "导演"))).all()
result = db.query(Users).filter(Users.username.like('charles'), or_(Users.uid > 1, Users.nickname == "导演")).all()
print(result)
for row in result:
print(row.uid, row.username)
5.4 三表连接
result = db.query(Article, Users).join(Users, Article.uid == Users.uid) \
.join(Label, Article.l_id == Label.l_id).all()
5.5 利用SQLAlchemy执行原生SQL
result = db.execute("select * from users").fetchall()
print(result)
6 原生语句查询 返回json格式
try:
sql = ''
Info = db.execute(sql)
print(Info)
except Exception as e:
db.rollback()
print(e)
results = []
for i in searchs:
bid = i['bid']
isbn = i['isbn']
print(bid)
print(isbn)
result = {
"bid": bid,
"isbn": isbn,
}
print(result)
results.append(result)
data = {
"status": '1',
"results": results
}
return json.dumps(data)
3 统计数量
from sqlalchemy import func
older_num = db.query(func.count(Order_history.seller)).filter_by(seller=uname).scalar()
Sqlchemy查询结果转json
MySQL 查询统计 日期查询
<p><h3>文章目录</h3><ul><ul><li><a href="#1__7">1 增</a></li><li><a href="#2__22">2 删</a></li><li><a href="#3__44">3 改</a></li><li><a href="#4__61">4 基础查询</a></li><ul><li><a href="#41__62">4.1 基础查询汇总</a></li><li><a href="#42__76">4.2 限制查询</a></li><li><a href="#43__87">4.3 计数</a></li><li><a href="#44__97">4.4 去重</a></li><li><a href="#45__108">4.5 排序</a></li><li><a href="#46__118">4.6 模糊查询</a></li><li><a href="#47__126">4.7 分组查询</a></li><li><a href="#48__134">4.8 聚合函数</a></li></ul><li><a href="#5__144">5 多表查询</a></li><ul><li><a href="#51__145">5.1 内连接</a></li><li><a href="#52__168">5.2 左外连接</a></li><li><a href="#53__178">5.3 复杂查询</a></li><li><a href="#54__190">5.4 三表连接</a></li><li><a href="#55_SQLAlchemySQL_196">5.5 利用SQLAlchemy执行原生SQL</a></li></ul><li><a href="#6__json_203">6 原生语句查询 返回json格式</a></li><li><a href="#3__237">3 统计数量</a></li></ul></ul></p>
<p><font face="楷体,华文行楷,隶书,黑体" color="red" size="4"><strong>哈喽,大家好,我是有勇气的牛排(全网同名)🐮🐮🐮</strong></font></p>
<p><font face="楷体,华文行楷,隶书,黑体" color="blue" size="4"><strong>有问题的小伙伴欢迎在文末评论,点赞、收藏是对我最大的支持!!!。</strong></font></p>
<h2><a id="1__7"></a>1 增</h2>
<p>Customer为表名<br />
<img src="https://static.couragesteak.com/article/20cd8d6d53a0921853b86f1d9c5b280b.png" alt="image.png" /></p>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">try</span>:
username = <span class="hljs-string">'123456'</span>
customerInfo = Customer(username=username)
db.add(customerInfo) <span class="hljs-comment"># 添加数据</span>
db.commit() <span class="hljs-comment"># 提交即保存到数据库</span>
<span class="hljs-keyword">except</span> Exception <span class="hljs-keyword">as</span> e:
db.rollback()
<span class="hljs-built_in">print</span>(e)
</code></div></pre>
<h2><a id="2__22"></a>2 删</h2>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-comment"># 删除</span>
<span class="hljs-meta">@route(<span class="hljs-params"><span class="hljs-string">'/professionDeleteType/<num>'</span></span>)</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">professionDeleteType</span>(<span class="hljs-params">db,num</span>):
<span class="hljs-built_in">print</span>(num)
<span class="hljs-keyword">try</span>:
<span class="hljs-built_in">print</span>(<span class="hljs-string">'--------删除--------------'</span>)
<span class="hljs-built_in">print</span>(num)
TypeNameInfo = db.query(Profession).<span class="hljs-built_in">filter</span>(Profession.pid==<span class="hljs-built_in">int</span>(num)).delete()
db.commit() <span class="hljs-comment"># 提交即保存到数据库</span>
<span class="hljs-comment"># db.close() # 关闭会话</span>
<span class="hljs-keyword">except</span> Exception <span class="hljs-keyword">as</span> e:
<span class="hljs-built_in">print</span>(e)
<span class="hljs-keyword">return</span> redirect(<span class="hljs-string">'/profession'</span>)
</code></div></pre>
<h2><a id="3__44"></a>3 改</h2>
<p>Users表</p>
<p><img src="https://static.couragesteak.com/article/1f2f421fd0be26d5e0aa10f9828d78d4.png" alt="image.png" /></p>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">try</span>:
username = db.query(Users).filter_by(username=username).first()
username.nickname = Hnickname
username.img_url = Himg_url
db.commit()
<span class="hljs-keyword">except</span>:
db.rollback()
<span class="hljs-built_in">print</span>(e)
<span class="hljs-keyword">return</span> json.dumps({<span class="hljs-string">'data'</span>: <span class="hljs-number">0</span>, <span class="hljs-string">'info'</span>: <span class="hljs-string">'内部错误,请刷新!!!'</span>})
</code></div></pre>
<h2><a id="4__61"></a>4 基础查询</h2>
<h3><a id="41__62"></a>4.1 基础查询汇总</h3>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-comment"># select * from users;</span>
result = db.query(Users).<span class="hljs-built_in">all</span>()
<span class="hljs-comment"># select uid, username from users;</span>
result = db.query(Users.uid, Users.username).<span class="hljs-built_in">all</span>()
<span class="hljs-comment"># select * from users where uid=17 and username='666';</span>
result = db.query(Users).filter_by(uid=<span class="hljs-number">17</span>, username=<span class="hljs-string">'666'</span>).<span class="hljs-built_in">all</span>()
<span class="hljs-comment"># select * from users where uid>=16 or username='666';</span>
result = db.query(Users).<span class="hljs-built_in">filter</span>(or_(
Users.uid >= <span class="hljs-number">16</span>,
Users.username == <span class="hljs-string">'666'</span>
)).<span class="hljs-built_in">all</span>()
</code></div></pre>
<h3><a id="42__76"></a>4.2 限制查询</h3>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-comment"># 查询前3行</span>
result = db.query(Users).limit(<span class="hljs-number">3</span>).<span class="hljs-built_in">all</span>()
<span class="hljs-comment"># select * from users limit 3,5;</span>
result = db.query(Users).limit(<span class="hljs-number">3</span>).offset(<span class="hljs-number">3</span>).<span class="hljs-built_in">all</span>()
</code></div></pre>
<p><code>limit</code>:查询多少条<br />
<code>offset</code>:偏移量 -> 3 表示从第4条开始</p>
<h3><a id="43__87"></a>4.3 计数</h3>
<pre><div class="hljs"><code class="lang-sql"><span class="hljs-keyword">select</span> <span class="hljs-built_in">count</span>(<span class="hljs-operator">*</span>) <span class="hljs-keyword">from</span> users <span class="hljs-keyword">where</span> ...
</code></div></pre>
<p><code>filter</code>:== >= < > != != in not</p>
<pre><div class="hljs"><code class="lang-python">count = db.query(Users).<span class="hljs-built_in">filter</span>(Users.uid > <span class="hljs-number">16</span>).count()
<span class="hljs-built_in">print</span>(count)
</code></div></pre>
<h3><a id="44__97"></a>4.4 去重</h3>
<pre><div class="hljs"><code class="lang-sql"><span class="hljs-keyword">select</span> <span class="hljs-keyword">distinct</span>(openid) <span class="hljs-keyword">from</span> users;
</code></div></pre>
<pre><div class="hljs"><code class="lang-python">result = db.query(Users.openid).distinct(Users.openid).<span class="hljs-built_in">all</span>()
<span class="hljs-built_in">print</span>(result)
<span class="hljs-keyword">for</span> row <span class="hljs-keyword">in</span> result:
<span class="hljs-built_in">print</span>(row.openid)
</code></div></pre>
<h3><a id="45__108"></a>4.5 排序</h3>
<pre><div class="hljs"><code class="lang-sql"><span class="hljs-keyword">select</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">from</span> users <span class="hljs-keyword">order</span> <span class="hljs-keyword">by</span> uid <span class="hljs-keyword">desc</span>;
</code></div></pre>
<pre><div class="hljs"><code class="lang-python">result = db.query(Users).order_by(Users.uid.desc()).<span class="hljs-built_in">all</span>()
</code></div></pre>
<h3><a id="46__118"></a>4.6 模糊查询</h3>
<pre><div class="hljs"><code class="lang-sql"><span class="hljs-keyword">select</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">from</span> users <span class="hljs-keyword">where</span> username <span class="hljs-keyword">like</span> <span class="hljs-string">'%929%'</span>;
</code></div></pre>
<pre><div class="hljs"><code class="lang-python">result = db.query(Users).<span class="hljs-built_in">filter</span>(Users.username.like(<span class="hljs-string">'%929%'</span>)).<span class="hljs-built_in">all</span>()
</code></div></pre>
<h3><a id="47__126"></a>4.7 分组查询</h3>
<pre><div class="hljs"><code class="lang-python">select * <span class="hljs-keyword">from</span> users group by isAdmin;
</code></div></pre>
<pre><div class="hljs"><code class="lang-python">result = db.query(Users).group_by(Users.openid).<span class="hljs-built_in">all</span>()
result = db.query(Users).group_by(Users.openid).having(Users.uid > <span class="hljs-number">2</span>).<span class="hljs-built_in">all</span>()
</code></div></pre>
<h3><a id="48__134"></a>4.8 聚合函数</h3>
<p><code>min</code>、<code>max</code>、<code>avg</code>、<code>sum</code></p>
<pre><div class="hljs"><code class="lang-sql"><span class="hljs-keyword">select</span> <span class="hljs-built_in">sum</span>(u_dealNum) <span class="hljs-keyword">from</span> users;
</code></div></pre>
<pre><div class="hljs"><code class="lang-python">result = db.query(func.<span class="hljs-built_in">sum</span>(Users.u_dealNum)).first()
<span class="hljs-built_in">print</span>(result)
</code></div></pre>
<h2><a id="5__144"></a>5 多表查询</h2>
<h3><a id="51__145"></a>5.1 内连接</h3>
<p>查询发表过文章的 用户信息+文章信息</p>
<pre><div class="hljs"><code class="lang-sql"><span class="hljs-keyword">select</span> a_title <span class="hljs-keyword">from</span> users, article <span class="hljs-keyword">where</span> users.uid<span class="hljs-operator">=</span>article.uid <span class="hljs-keyword">and</span> article.a_id<span class="hljs-operator">=</span><span class="hljs-number">1</span>;
<span class="hljs-keyword">select</span> a_title <span class="hljs-keyword">from</span> article <span class="hljs-keyword">inner</span> <span class="hljs-keyword">join</span> users <span class="hljs-keyword">on</span> users.uid<span class="hljs-operator">=</span>article.uid <span class="hljs-keyword">where</span> article.a_id<span class="hljs-operator">=</span><span class="hljs-number">1</span>;
</code></div></pre>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-comment"># 多表查询时,返回的结果集不再是单纯的[Model, Model]数据结构,而是每张表的结果有独立的对象来维护</span>
result = db.query(Article, Users).join(Users, Article.uid == Users.uid).<span class="hljs-built_in">filter</span>(Article.a_id == <span class="hljs-number">1</span>).<span class="hljs-built_in">all</span>()
<span class="hljs-built_in">print</span>(result)
<span class="hljs-keyword">for</span> article, users <span class="hljs-keyword">in</span> result:
<span class="hljs-built_in">print</span>(article.uid, article.a_title, users.username)
</code></div></pre>
<pre><div class="hljs"><code class="lang-python">result = db.query(Article, Users.username).join(Users, Article.uid == Users.uid).<span class="hljs-built_in">filter</span>(Article.a_id == <span class="hljs-number">1</span>).<span class="hljs-built_in">all</span>()
<span class="hljs-built_in">print</span>(result)
<span class="hljs-keyword">for</span> article, username <span class="hljs-keyword">in</span> result:
<span class="hljs-built_in">print</span>(article.uid, article.a_title, username)
</code></div></pre>
<h3><a id="52__168"></a>5.2 左外连接</h3>
<p>查询所有用户 写的文章阅读量</p>
<pre><div class="hljs"><code class="lang-sql"><span class="hljs-keyword">select</span> nickname,a_title,<span class="hljs-built_in">sum</span>(a_pageviews) <span class="hljs-keyword">as</span> total <span class="hljs-keyword">from</span> users <span class="hljs-keyword">left</span> <span class="hljs-keyword">join</span> article <span class="hljs-keyword">on</span> users.uid<span class="hljs-operator">=</span>article.uid <span class="hljs-keyword">group</span> <span class="hljs-keyword">by</span> users.uid <span class="hljs-keyword">having</span> total<span class="hljs-operator">></span><span class="hljs-number">0</span>;
</code></div></pre>
<pre><div class="hljs"><code class="lang-python">result = db.query(Users.uid, Users.nickname, func.<span class="hljs-built_in">sum</span>(Article.a_pageviews)).outerjoin(Article, Users.uid == Article.uid).group_by(Users.uid).<span class="hljs-built_in">all</span>()
</code></div></pre>
<h3><a id="53__178"></a>5.3 复杂查询</h3>
<p><code>and和or混用</code>: <code>username like 'charles' or uid>1 and nickname='导演'</code></p>
<pre><div class="hljs"><code class="lang-python">result = db.query(Users).<span class="hljs-built_in">filter</span>(
or_(Users.username.like(<span class="hljs-string">'charles'</span>), and_(Users.uid > <span class="hljs-number">1</span>, Users.nickname == <span class="hljs-string">"导演"</span>))).<span class="hljs-built_in">all</span>()
result = db.query(Users).<span class="hljs-built_in">filter</span>(Users.username.like(<span class="hljs-string">'charles'</span>), or_(Users.uid > <span class="hljs-number">1</span>, Users.nickname == <span class="hljs-string">"导演"</span>)).<span class="hljs-built_in">all</span>()
<span class="hljs-built_in">print</span>(result)
<span class="hljs-keyword">for</span> row <span class="hljs-keyword">in</span> result:
<span class="hljs-built_in">print</span>(row.uid, row.username)
</code></div></pre>
<h3><a id="54__190"></a>5.4 三表连接</h3>
<pre><div class="hljs"><code class="lang-python">result = db.query(Article, Users).join(Users, Article.uid == Users.uid) \
.join(Label, Article.l_id == Label.l_id).<span class="hljs-built_in">all</span>()
</code></div></pre>
<h3><a id="55_SQLAlchemySQL_196"></a>5.5 利用SQLAlchemy执行原生SQL</h3>
<pre><div class="hljs"><code class="lang-python">result = db.execute(<span class="hljs-string">"select * from users"</span>).fetchall()
<span class="hljs-built_in">print</span>(result)
</code></div></pre>
<h2><a id="6__json_203"></a>6 原生语句查询 返回json格式</h2>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">try</span>:
sql = <span class="hljs-string">''</span>
Info = db.execute(sql)
<span class="hljs-built_in">print</span>(Info)
<span class="hljs-keyword">except</span> Exception <span class="hljs-keyword">as</span> e:
db.rollback()
<span class="hljs-built_in">print</span>(e)
</code></div></pre>
<pre><div class="hljs"><code class="lang-python">results = []
<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> searchs:
bid = i[<span class="hljs-string">'bid'</span>] <span class="hljs-comment"># 索引</span>
isbn = i[<span class="hljs-string">'isbn'</span>] <span class="hljs-comment"># isbn</span>
<span class="hljs-built_in">print</span>(bid)
<span class="hljs-built_in">print</span>(isbn)
result = {
<span class="hljs-string">"bid"</span>: bid,
<span class="hljs-string">"isbn"</span>: isbn,
}
<span class="hljs-built_in">print</span>(result)
results.append(result)
data = {
<span class="hljs-string">"status"</span>: <span class="hljs-string">'1'</span>,
<span class="hljs-string">"results"</span>: results
}
<span class="hljs-keyword">return</span> json.dumps(data)
</code></div></pre>
<h2><a id="3__237"></a>3 统计数量</h2>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">from</span> sqlalchemy <span class="hljs-keyword">import</span> func
</code></div></pre>
<pre><div class="hljs"><code class="lang-python">older_num = db.query(func.count(Order_history.seller)).filter_by(seller=uname).scalar()
</code></div></pre>
<p><a href="https://editor.csdn.net/md/?articleId=105605179" target="_blank">Sqlchemy查询结果转json</a><br />
<a href="https://blog.csdn.net/zx77588023/article/details/117508996" target="_blank">MySQL 查询统计 日期查询</a></p>
留言