设为首页 收藏本站
查看: 2085|回复: 0

[经验分享] 从零开始学Python-day7

[复制链接]

尚未签到

发表于 2018-8-16 06:52:23 | 显示全部楼层 |阅读模式
##导入数据库  
In [8]: import MySQLdb as mysql
  
##连接数据库
  
In [9]: data = mysql.connect(user='root',passwd='123456',db='reboot',charset='utf8')
  

  
##建立游标,添加这行后数据库就初始化完成
  
In [10]: cur = data.cursor()
  

  
In [11]: data.autocommit(True)  ##设置自动提交,比较重要
  

  
##在ipython端添加数据
  

  
#在ipython段查询所有数据
  
In [13]: cur.execute('select * from users')
  
Out[13]: 1L
  

  
In [14]: import datetime    #导入datetime
  

  
In [15]: ##datetime模块可以实现在数据库中create_time生成时间
  

  
In [16]: sql = "insert into users(name,name_cn,password,email,mobile,role,status,create_time) values ('cc'
  
    ...: ,'cc','cC23 ','CC@chinacache.com','CCC','user','0','%s') " %(datetime.datetime.now().strftime("%Y
  
    ...: -%m-%d  %H:%M:%S"))
  

  
In [17]: print sql
  
insert into users(name,name_cn,password,email,mobile,role,status,create_time) values ('cc','cc','cC23 ','CC@chinacache.com','CCC','user','0','2016-11-30  16:04:33')
  

  
In [18]: cur.execute(sql)
  
Out[18]: 1L
  
#再次查询所有数据发现新增加了一条数据
  
In [19]: cur.execute("select * from users;")
  
Out[19]: 2L
  

  
##在mysql段查询所有数据确认新增数据
  
mysql> select * from users;
  
+----+------+---------+----------+-------------------+--------+------+--------+---------------------+-----------+
  
| id | name | name_cn | password | email             | mobile | role | status | create_time         | last_time |
  
+----+------+---------+----------+-------------------+--------+------+--------+---------------------+-----------+
  
|  1 | ss   | ss      | ss123    | ss@chinacache.com | ssss   | user |      0 | 2016-11-30 15:37:48 | NULL      |
  
|  2 | cc   | cc      | cC23     | CC@chinacache.com | CCC    | user |      0 | 2016-11-30 16:04:33 | NULL      |
  
+----+------+---------+----------+-------------------+--------+------+--------+---------------------+-----------+
  
2 rows in set (0.00 sec)
  

  
mysql>
  

  
##ipython交互下查找数据
  

  

  
###查询所有数据
  
In [20]: select_sql = "select name,name_cn,password,email,mobile,role,status,create_time from users"
  

  
In [21]: cur.execute(select_sql)
  
Out[21]: 2L
  

  
In [22]: res = cur.fetchall()      ##查找所有数据使用cur.fetchall(),单条数据则使用cur.fetchone()
  

  
In [23]: print res
  
((u'ss', u'ss', u'ss123 ', u'ss@chinacache.com', u'ssss', u'user', 0, datetime.datetime(2016, 11, 30, 15, 37, 48)), (u'cc', u'cc', u'cC23 ', u'CC@chinacache.com', u'CCC', u'user', 0, datetime.datetime(2016, 11, 30, 16, 4, 33)))
  

  

  
###查询单条数据
  
In [24]: select_sql = "select name,name_cn,password,email,mobile,role,status,create_time from users where
  
    ...: name = 'ss'"
  

  
In [25]: cur.execute(select_sql)
  
Out[25]: 1L
  

  
In [26]: res = cur.fetchone()
  

  
In [27]: print res
  
(u'ss', u'ss', u'ss123 ', u'ss@chinacache.com', u'ssss', u'user', 0, datetime.datetime(2016, 11, 30, 15, 37, 48))
  

  
In [28]:
  

  
###ipython交互模式下查询所有数据以及将数据重组成我们想要的形式
  
In [36]: select_sql = "select name,name_cn,password,email,mobile,role,status,create_time from users "
  

  
In [37]: cur.execute(select_sql)
  
Out[37]: 4L
  

  
In [38]: res = cur.fetchall()
  

  
In [39]: print res
  
((u'ss', u'ss', u'ss123 ', u'ss@chinacache.com', u'ssss', u'user', 0, datetime.datetime(2016, 11, 30, 15, 37, 48)), (u'cc', u'cc', u'cC23 ', u'CC@chinacache.com', u'CCC', u'user', 0, datetime.datetime(2016, 11, 30, 16, 4, 33)), (u'admin', u'admin', u'admin ', u'admin@cc.com', u'admin', u'admin', 0, datetime.datetime(2016, 11, 30, 16, 25, 17)), (u'TT', u'TT', u'tt123 ', u'tt@cc.com', u'123223', u'sa', 0, datetime.datetime(2016, 11, 30, 16, 26, 17)))
  

  
##思考:如何将上述res更改成为我们想要的字典形式
  
In [40]: fields = ['name','name_cn','password','email','mobile','role','status','create_time']
  

  
原生实现方式:
  
In [7]: select_sql = "select %s from users" %','.join(fields)
  

  
In [8]: print select_sql
  
select name,name_cn,password,email,mobile,role,status,create_time from users
  

  
In [9]: cur.execute(select_sql)
  
Out[9]: 4L
  

  
In [10]: res = cur.fetchall()
  

  
In [11]: res
  
Out[11]:
  
((u'ss',
  
  u'ss',
  
  u'ss123 ',
  
  u'ss@chinacache.com',
  
  u'ssss',
  
  u'user',
  
  0,
  
  datetime.datetime(2016, 11, 30, 15, 37, 48)),
  
(u'cc',
  
  u'cc',
  
  u'cC23 ',
  
  u'CC@chinacache.com',
  
  u'CCC',
  
  u'user',
  
  0,
  
  datetime.datetime(2016, 11, 30, 16, 4, 33)),
  
(u'admin',
  
  u'admin',
  
  u'admin ',
  
  u'admin@cc.com',
  
  u'admin',
  
  u'admin',
  
  0,
  
  datetime.datetime(2016, 11, 30, 16, 25, 17)),
  
(u'TT',
  
  u'TT',
  
  u'tt123 ',
  
  u'tt@cc.com',
  
  u'123223',
  
  u'sa',
  
  0,
  
  datetime.datetime(2016, 11, 30, 16, 26, 17)))
  

  
In [12]: users = []
  

  
In [13]: for row in res :
  
    ...:     user = {}
  
    ...:     for k ,v in enumerate(fields):
  
    ...:         user[v] = row[k]
  
    ...:     users.append(user)
  
    ...:
  

  
In [14]: users
  
Out[14]:
  
[{'create_time': datetime.datetime(2016, 11, 30, 15, 37, 48),
  
  'email': u'ss@chinacache.com',
  
  'mobile': u'ssss',
  
  'name': u'ss',
  
  'name_cn': u'ss',
  
  'password': u'ss123 ',
  
  'role': u'user',
  
  'status': 0},
  
{'create_time': datetime.datetime(2016, 11, 30, 16, 4, 33),
  
  'email': u'CC@chinacache.com',
  
  'mobile': u'CCC',
  
  'name': u'cc',
  
  'name_cn': u'cc',
  
  'password': u'cC23 ',
  
  'role': u'user',
  
  'status': 0},
  
{'create_time': datetime.datetime(2016, 11, 30, 16, 25, 17),
  
  'email': u'admin@cc.com',
  
  'mobile': u'admin',
  
  'name': u'admin',
  
  'name_cn': u'admin',
  
  'password': u'admin ',
  
  'role': u'admin',
  
  'status': 0},
  
{'create_time': datetime.datetime(2016, 11, 30, 16, 26, 17),
  
  'email': u'tt@cc.com',
  
  'mobile': u'123223',
  
  'name': u'TT',
  
  'name_cn': u'TT',
  
  'password': u'tt123 ',
  
  'role': u'sa',
  
  'status': 0}]
  

  
In [15]:
  

  
###高阶的进阶方式代码(字典生成式 + 列表生成式 一行搞定)
  
In [45]: users = [dict((v,row[k]) for k ,v in enumerate(fields)) for row in res ]
  

  
###关闭游标和数据库
  
In [15]: cur.close()
  

  
In [16]: data.close()

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-552352-1-1.html 上篇帖子: 使用Python从 MySQL写数据到Excel 下篇帖子: Python3.4 .py文件如何打包成.exe文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表