Python3 --- sqlalchemy

论坛 期权论坛     
选择匿名的用户   2021-6-2 16:01   405   0
<p>本节内容</p>
<ol><li>ORM介绍</li><li>sqlalchemy安装</li><li>sqlalchemy基本使用</li><li>多外键关联</li><li>多对多关系</li><li>表结构设计作业</li></ol>
<p> </p>
<h3>1. ORM介绍</h3>
<p>orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了保证一致的使用习惯,通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了,而不用直接使用sql语言。</p>
<p><img alt="" class="blockcode" height="445" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-7868e1c94fab5e15f114bfac3d5da4a7.png" width="551"></p>
<p><strong>orm的优点:</strong></p>
<ol><li>隐藏了数据访问细节,“封闭”的通用数据库交互,ORM的核心。他使得我们的通用数据库交互变得简单易行,并且完全不用考虑该死的SQL语句。快速开发,由此而来。</li><li>ORM使我们构造固化数据结构变得简单易行。</li></ol>
<p><strong>缺点:</strong></p>
<ol><li>无可避免的,自动化意味着映射和关联管理,代价是牺牲性能(早期,这是所有不喜欢ORM人的共同点)。现在的各种ORM框架都在尝试使用各种方法来减轻这块(LazyLoad,Cache),效果还是很显著的。</li></ol>
<p> </p>
<h3>2. sqlalchemy安装</h3>
<p>在Python中,最有名的ORM框架是SQLAlchemy。用户包括openstack\Dropbox等知名公司或应用,主要用户列表http://www.sqlalchemy.org/organizations.html#openstack</p>
<p><img alt="" class="blockcode" height="463" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-4a3aaaf627e0d3800f8b7c7ec3ea5626.png" width="661"></p>
<p>Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如:</p>
<p> </p>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td> <p>1 </p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <p>11</p> <p>12</p> <p>13</p> </td><td> <p><code>MySQL-Python</code></p> <p><code>    </code><code>mysql&#43;mysqldb:</code><code>//</code><code>&lt;user&gt;:&lt;password&gt;&#64;&lt;host&gt;[:&lt;port&gt;]/&lt;dbname&gt;</code></p> <p><code>  </code> </p> <p><code>pymysql</code></p> <p><code>    </code><code>mysql&#43;pymysql:</code><code>//</code><code>&lt;username&gt;:&lt;password&gt;&#64;&lt;host&gt;/&lt;dbname&gt;[?&lt;options&gt;]</code></p> <p><code>  </code> </p> <p><code>MySQL-Connector</code></p> <p><code>    </code><code>mysql&#43;mysqlconnector:</code><code>//</code><code>&lt;user&gt;:&lt;password&gt;&#64;&lt;host&gt;[:&lt;port&gt;]/&lt;dbname&gt;</code></p> <p><code>  </code> </p> <p><code>cx_Oracle</code></p> <p><code>    </code><code>oracle&#43;cx_oracle:</code><code>//user</code><code>:pass&#64;host:port</code><code>/dbname</code><code>[?key&#61;value&amp;key&#61;value...]</code></p> <p><code>  </code> </p> <p><code>更多详见:http:</code><code>//docs</code><code>.sqlalchemy.org</code><code>/en/latest/dialects/index</code><code>.html</code></p> </td></tr></tbody></table>
<p>  </p>
<p>安装sqlalchemy</p>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td> <p>1</p> </td><td> <p><code>pip </code><code>install</code> <code>SQLAlchemy&lt;br&gt;&lt;br&gt;pip </code><code>install</code> <code>pymysql  </code><code>#由于mysqldb依然不支持py3,所以这里我们用pymysql与sqlalchemy交互</code></p> </td></tr></tbody></table>
<p> </p>
<h3>3.sqlalchemy基本使用</h3>
<p>下面就开始让你见证orm的nb之处,盘古开天劈地之前,我们创建一个表是这样的</p>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> </td><td> <p><code>CREATE</code> <code>TABLE</code> <code>user</code> <code>(</code></p> <p><code>    </code><code>id </code><code>INTEGER</code> <code>NOT</code> <code>NULL</code> <code>AUTO_INCREMENT,</code></p> <p><code>    </code><code>name</code> <code>VARCHAR</code><code>(32),</code></p> <p><code>    </code><code>password</code> <code>VARCHAR</code><code>(64),</code></p> <p><code>    </code><code>PRIMARY</code> <code>KEY</code> <code>(id)</code></p> <p><code>)</code></p> </td></tr></tbody></table>
<p>这只是最简单的sql表,如果再加上外键关联什么的,一般程序员的脑容量是记不住那些sql语句的,于是有了orm,实现上面同样的功能,代码如下</p>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <p>11</p> <p>12</p> <p>13</p> <p>14</p> <p>15</p> <p>16</p> <p>17</p> <p>18</p> </td><td> <p><code>import</code> <code>sqlalchemy</code></p> <p><code>from</code> <code>sqlalchemy </code><code>import</code> <code>create_engine</code></p> <p><code>from</code
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP