1+ <!DOCTYPE html>
2+ < html >
3+ < head >
4+ < meta charset ="utf-8 ">
5+
6+
7+
8+ < title > Python-MySQL增删改查操作 | Hexo</ title >
9+ < meta name ="viewport " content ="width=device-width, initial-scale=1, maximum-scale=1 ">
10+ < meta name ="description " content ="一、原生模块pymsqlpymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。 下载安装 1pip3 install pymysql 查询操作 1234567891011121314151617import pymysql# 创建连接conn = pymysql.connect(host=&apos;127.0.0.1&apos;, port=3306, use ">
11+ < meta property ="og:type " content ="article ">
12+ < meta property ="og:title " content ="Python-MySQL增删改查操作 ">
13+ < meta property ="og:url " content ="http://yoursite.com/2018/06/18/firstBlog/index.html ">
14+ < meta property ="og:site_name " content ="Hexo ">
15+ < meta property ="og:description " content ="一、原生模块pymsqlpymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。 下载安装 1pip3 install pymysql 查询操作 1234567891011121314151617import pymysql# 创建连接conn = pymysql.connect(host=&apos;127.0.0.1&apos;, port=3306, use ">
16+ < meta property ="og:locale " content ="default ">
17+ < meta property ="og:updated_time " content ="2018-06-18T07:58:44.156Z ">
18+ < meta name ="twitter:card " content ="summary ">
19+ < meta name ="twitter:title " content ="Python-MySQL增删改查操作 ">
20+ < meta name ="twitter:description " content ="一、原生模块pymsqlpymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。 下载安装 1pip3 install pymysql 查询操作 1234567891011121314151617import pymysql# 创建连接conn = pymysql.connect(host=&apos;127.0.0.1&apos;, port=3306, use ">
21+
22+ < link rel ="alternate " href ="/atom.xml " title ="Hexo " type ="application/atom+xml ">
23+
24+
25+ < link rel ="icon " href ="/favicon.png ">
26+
27+
28+ < link href ="//fonts.googleapis.com/css?family=Source+Code+Pro " rel ="stylesheet " type ="text/css ">
29+
30+ < link rel ="stylesheet " href ="/css/style.css ">
31+ </ head >
32+
33+ < body >
34+ < div id ="container ">
35+ < div id ="wrap ">
36+ < header id ="header ">
37+ < div id ="banner "> </ div >
38+ < div id ="header-outer " class ="outer ">
39+ < div id ="header-title " class ="inner ">
40+ < h1 id ="logo-wrap ">
41+ < a href ="/ " id ="logo "> Hexo</ a >
42+ </ h1 >
43+
44+ </ div >
45+ < div id ="header-inner " class ="inner ">
46+ < nav id ="main-nav ">
47+ < a id ="main-nav-toggle " class ="nav-icon "> </ a >
48+
49+ < a class ="main-nav-link " href ="/ "> Home</ a >
50+
51+ < a class ="main-nav-link " href ="/archives "> Archives</ a >
52+
53+ </ nav >
54+ < nav id ="sub-nav ">
55+
56+ < a id ="nav-rss-link " class ="nav-icon " href ="/atom.xml " title ="RSS Feed "> </ a >
57+
58+ < a id ="nav-search-btn " class ="nav-icon " title ="Search "> </ a >
59+ </ nav >
60+ < div id ="search-form-wrap ">
61+ < form action ="//google.com/search " method ="get " accept-charset ="UTF-8 " class ="search-form "> < input type ="search " name ="q " class ="search-form-input " placeholder ="Search "> < button type ="submit " class ="search-form-submit "> </ button > < input type ="hidden " name ="sitesearch " value ="http://yoursite.com "> </ form >
62+ </ div >
63+ </ div >
64+ </ div >
65+ </ header >
66+ < div class ="outer ">
67+ < section id ="main "> < article id ="post-firstBlog " class ="article article-type-post " itemscope itemprop ="blogPost ">
68+ < div class ="article-meta ">
69+ < a href ="/2018/06/18/firstBlog/ " class ="article-date ">
70+ < time datetime ="2018-06-18T07:56:33.000Z " itemprop ="datePublished "> 2018-06-18</ time >
71+ </ a >
72+
73+ </ div >
74+ < div class ="article-inner ">
75+
76+
77+ < header class ="article-header ">
78+
79+
80+ < h1 class ="article-title " itemprop ="name ">
81+ Python-MySQL增删改查操作
82+ </ h1 >
83+
84+
85+ </ header >
86+
87+ < div class ="article-entry " itemprop ="articleBody ">
88+
89+ < h2 id ="一、原生模块pymsql "> < a href ="#一、原生模块pymsql " class ="headerlink " title ="一、原生模块pymsql "> </ a > 一、原生模块pymsql</ h2 > < p > pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。</ p >
90+ < ol >
91+ < li > < p > 下载安装</ p >
92+ < figure class ="highlight plain "> < table > < tr > < td class ="gutter "> < pre > < span class ="line "> 1</ span > < br > </ pre > </ td > < td class ="code "> < pre > < span class ="line "> pip3 install pymysql</ span > < br > </ pre > </ td > </ tr > </ table > </ figure >
93+ </ li >
94+ < li > < p > 查询操作</ p >
95+ < figure class ="highlight plain "> < table > < tr > < td class ="gutter "> < pre > < span class ="line "> 1</ span > < br > < span class ="line "> 2</ span > < br > < span class ="line "> 3</ span > < br > < span class ="line "> 4</ span > < br > < span class ="line "> 5</ span > < br > < span class ="line "> 6</ span > < br > < span class ="line "> 7</ span > < br > < span class ="line "> 8</ span > < br > < span class ="line "> 9</ span > < br > < span class ="line "> 10</ span > < br > < span class ="line "> 11</ span > < br > < span class ="line "> 12</ span > < br > < span class ="line "> 13</ span > < br > < span class ="line "> 14</ span > < br > < span class ="line "> 15</ span > < br > < span class ="line "> 16</ span > < br > < span class ="line "> 17</ span > < br > </ pre > </ td > < td class ="code "> < pre > < span class ="line "> import pymysql</ span > < br > < span class ="line "> # 创建连接</ span > < br > < span class ="line "> conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='db_st')</ span > < br > < span class ="line "> # 创建游标</ span > < br > < span class ="line "> cursor = conn.cursor()</ span > < br > < span class ="line "> # 执行SQL,并返回受影响的行数</ span > < br > < span class ="line "> effect_row = cursor.execute("select * from db_st.tb_user")</ span > < br > < span class ="line "> print(effect_row) # 打印受影响的行数</ span > < br > < span class ="line "> # print(cursor.fetchone()) # 获取第一行数据</ span > < br > < span class ="line "> print(cursor.fetchmany(effect_row)) # 获取前n行数据</ span > < br > < span class ="line "> # print(cursor.fetchall()) # 获取所有数据</ span > < br > < span class ="line "> # 提交,不然无法保存新建或者修改的数据</ span > < br > < span class ="line "> conn.commit()</ span > < br > < span class ="line "> # 关闭游标</ span > < br > < span class ="line "> cursor.close()</ span > < br > < span class ="line "> # 关闭连接</ span > < br > < span class ="line "> conn.close()</ span > < br > </ pre > </ td > </ tr > </ table > </ figure >
96+ </ li >
97+ < li > < p > 修改操作</ p >
98+ < figure class ="highlight plain "> < table > < tr > < td class ="gutter "> < pre > < span class ="line "> 1</ span > < br > < span class ="line "> 2</ span > < br > < span class ="line "> 3</ span > < br > < span class ="line "> 4</ span > < br > < span class ="line "> 5</ span > < br > < span class ="line "> 6</ span > < br > < span class ="line "> 7</ span > < br > < span class ="line "> 8</ span > < br > < span class ="line "> 9</ span > < br > < span class ="line "> 10</ span > < br > < span class ="line "> 11</ span > < br > < span class ="line "> 12</ span > < br > < span class ="line "> 13</ span > < br > </ pre > </ td > < td class ="code "> < pre > < span class ="line "> import pymysql</ span > < br > < span class ="line "> # 创建连接</ span > < br > < span class ="line "> conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='db_st')</ span > < br > < span class ="line "> # 创建游标</ span > < br > < span class ="line "> cursor = conn.cursor()</ span > < br > < span class ="line "> effect_row = cursor.execute("update tb_user set password='why199771' where name='why'")</ span > < br > < span class ="line "> print(effect_row)</ span > < br > < span class ="line "> # 提交,不然无法保存新建或者修改的数据</ span > < br > < span class ="line "> conn.commit()</ span > < br > < span class ="line "> # 关闭游标</ span > < br > < span class ="line "> cursor.close()</ span > < br > < span class ="line "> # 关闭连接</ span > < br > < span class ="line "> conn.close()</ span > < br > </ pre > </ td > </ tr > </ table > </ figure >
99+ </ li >
100+ < li > < p > 增加操作</ p >
101+ < figure class ="highlight plain "> < table > < tr > < td class ="gutter "> < pre > < span class ="line "> 1</ span > < br > < span class ="line "> 2</ span > < br > < span class ="line "> 3</ span > < br > < span class ="line "> 4</ span > < br > < span class ="line "> 5</ span > < br > < span class ="line "> 6</ span > < br > < span class ="line "> 7</ span > < br > < span class ="line "> 8</ span > < br > < span class ="line "> 9</ span > < br > < span class ="line "> 10</ span > < br > < span class ="line "> 11</ span > < br > < span class ="line "> 12</ span > < br > < span class ="line "> 13</ span > < br > < span class ="line "> 14</ span > < br > < span class ="line "> 15</ span > < br > < span class ="line "> 16</ span > < br > < span class ="line "> 17</ span > < br > </ pre > </ td > < td class ="code "> < pre > < span class ="line "> import pymysql</ span > < br > < span class ="line "> # 创建连接</ span > < br > < span class ="line "> conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='db_st')</ span > < br > < span class ="line "> # 创建游标</ span > < br > < span class ="line "> cursor = conn.cursor()</ span > < br > < span class ="line "> data = [</ span > < br > < span class ="line "> ('why', '12345'),</ span > < br > < span class ="line "> ('syx', '54321')</ span > < br > < span class ="line "> ]</ span > < br > < span class ="line "> # 插入数据</ span > < br > < span class ="line "> cursor.executemany("insert into tb_user (name, password) values (%s,%s)", data)</ span > < br > < span class ="line "> # 提交,不然无法保存新建或者修改的数据</ span > < br > < span class ="line "> conn.commit()</ span > < br > < span class ="line "> # 关闭游标</ span > < br > < span class ="line "> cursor.close()</ span > < br > < span class ="line "> # 关闭连接</ span > < br > < span class ="line "> conn.close()</ span > < br > </ pre > </ td > </ tr > </ table > </ figure >
102+ </ li >
103+ < li > < p > 删除操作</ p >
104+ < figure class ="highlight plain "> < table > < tr > < td class ="gutter "> < pre > < span class ="line "> 1</ span > < br > < span class ="line "> 2</ span > < br > < span class ="line "> 3</ span > < br > < span class ="line "> 4</ span > < br > < span class ="line "> 5</ span > < br > < span class ="line "> 6</ span > < br > < span class ="line "> 7</ span > < br > < span class ="line "> 8</ span > < br > < span class ="line "> 9</ span > < br > < span class ="line "> 10</ span > < br > < span class ="line "> 11</ span > < br > < span class ="line "> 12</ span > < br > < span class ="line "> 13</ span > < br > < span class ="line "> 14</ span > < br > </ pre > </ td > < td class ="code "> < pre > < span class ="line "> import pymysql</ span > < br > < span class ="line "> # 创建连接</ span > < br > < span class ="line "> conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='db_st')</ span > < br > < span class ="line "> # 创建游标</ span > < br > < span class ="line "> cursor = conn.cursor()</ span > < br > < span class ="line "> # 执行SQL,并返回受影响的行数</ span > < br > < span class ="line "> effect_row = cursor.execute("DELETE FROM tb_user where name='syx'")</ span > < br > < span class ="line "> print(effect_row) # 打印受影响的行数</ span > < br > < span class ="line "> # 提交,不然无法保存新建或者修改的数据</ span > < br > < span class ="line "> conn.commit()</ span > < br > < span class ="line "> # 关闭游标</ span > < br > < span class ="line "> cursor.close()</ span > < br > < span class ="line "> # 关闭连接</ span > < br > < span class ="line "> conn.close()</ span > < br > </ pre > </ td > </ tr > </ table > </ figure >
105+ </ li >
106+ < li > < p > fetch数据类型< br > fetch默认获取的数据是元祖类型,如果想获取字典类型的数据,如下操作:</ p >
107+ < figure class ="highlight plain "> < table > < tr > < td class ="gutter "> < pre > < span class ="line "> 1</ span > < br > </ pre > </ td > < td class ="code "> < pre > < span class ="line "> cursor = conn.cursor(cursor=pymsql.curcors.DictCursor)</ span > < br > </ pre > </ td > </ tr > </ table > </ figure >
108+ </ li >
109+ </ ol >
110+ < h2 id ="二、ORM框架SQLAlchemy "> < a href ="#二、ORM框架SQLAlchemy " class ="headerlink " title ="二、ORM框架SQLAlchemy "> </ a > 二、ORM框架SQLAlchemy</ h2 > < p > ORM的英文全称为OBJECT RELATIONAL MAPPING,即对象映射关系程序。通常情况下我们使用的都是关系型数据库,但是我们所使用的编程语言例如Python这种属于面向对象的语言,为了保证使用的一致性,通过ORM将面向对象编程语言的对象模型和关系数据库的关系模型建立映射关系,这样我们对数据库进行操作时就可以直接使用对象模型进行操作就可以了。< br > 在Python中,最有名的PRM框架是SQLAlchemy。</ p >
111+ < ol >
112+ < li > < p > 下载安装< br > 由于mysqldb不支持python3,所以安装SQLAlchemy之前需要安装pymysql与SQLAlchemy进行交互。</ p >
113+ < figure class ="highlight plain "> < table > < tr > < td class ="gutter "> < pre > < span class ="line "> 1</ span > < br > </ pre > </ td > < td class ="code "> < pre > < span class ="line "> pip3 install SQLAlchemy</ span > < br > </ pre > </ td > </ tr > </ table > </ figure >
114+ </ li >
115+ < li > </ li >
116+ </ ol >
117+
118+
119+ </ div >
120+ < footer class ="article-footer ">
121+ < a data-url ="http://yoursite.com/2018/06/18/firstBlog/ " data-id ="cjijyxts00000rcfy2k7n1gz0 " class ="article-share-link "> Share</ a >
122+
123+
124+ </ footer >
125+ </ div >
126+
127+
128+ < nav id ="article-nav ">
129+
130+
131+ < a href ="/2018/06/18/hello-world/ " id ="article-nav-older " class ="article-nav-link-wrap ">
132+ < strong class ="article-nav-caption "> Older</ strong >
133+ < div class ="article-nav-title "> Hello World</ div >
134+ </ a >
135+
136+ </ nav >
137+
138+
139+ </ article >
140+
141+ </ section >
142+
143+ < aside id ="sidebar ">
144+
145+
146+
147+
148+
149+
150+
151+
152+
153+
154+ < div class ="widget-wrap ">
155+ < h3 class ="widget-title "> Archives</ h3 >
156+ < div class ="widget ">
157+ < ul class ="archive-list "> < li class ="archive-list-item "> < a class ="archive-list-link " href ="/archives/2018/06/ "> June 2018</ a > </ li > </ ul >
158+ </ div >
159+ </ div >
160+
161+
162+
163+
164+ < div class ="widget-wrap ">
165+ < h3 class ="widget-title "> Recent Posts</ h3 >
166+ < div class ="widget ">
167+ < ul >
168+
169+ < li >
170+ < a href ="/2018/06/18/firstBlog/ "> Python-MySQL增删改查操作</ a >
171+ </ li >
172+
173+ < li >
174+ < a href ="/2018/06/18/hello-world/ "> Hello World</ a >
175+ </ li >
176+
177+ </ ul >
178+ </ div >
179+ </ div >
180+
181+
182+ </ aside >
183+
184+ </ div >
185+ < footer id ="footer ">
186+
187+ < div class ="outer ">
188+ < div id ="footer-info " class ="inner ">
189+ © 2018 John Doe< br >
190+ Powered by < a href ="http://hexo.io/ " target ="_blank "> Hexo</ a >
191+ </ div >
192+ </ div >
193+ </ footer >
194+ </ div >
195+ < nav id ="mobile-nav ">
196+
197+ < a href ="/ " class ="mobile-nav-link "> Home</ a >
198+
199+ < a href ="/archives " class ="mobile-nav-link "> Archives</ a >
200+
201+ </ nav >
202+
203+
204+ < script src ="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js "> </ script >
205+
206+
207+ < link rel ="stylesheet " href ="/fancybox/jquery.fancybox.css ">
208+ < script src ="/fancybox/jquery.fancybox.pack.js "> </ script >
209+
210+
211+ < script src ="/js/script.js "> </ script >
212+
213+
214+
215+ </ div >
216+ </ body >
217+ </ html >
0 commit comments