python【系列教程】之数据库编程

举报
小米粒-biubiubiu 发表于 2020/12/03 23:46:00 2020/12/03
【摘要】 一、python数据库API简介       二、操作SQLite数据库 import sqlite3 # 获取数据库连接conn = sqlite3.connect('first.db')# 获取游标c = conn.cursor()# 执行查询语句c.execute('select * from user_tb where _id>?', (2,))p...

一、python数据库API简介

 

 

 

二、操作SQLite数据库


  
  1. import sqlite3
  2. # 获取数据库连接
  3. conn = sqlite3.connect('first.db')
  4. # 获取游标
  5. c = conn.cursor()
  6. # 执行查询语句
  7. c.execute('select * from user_tb where _id>?', (2,))
  8. print('查询返回的记录数', c.rowcount)
  9. # 通过游标的desription属性获取列信息
  10. for col in (c.description):
  11. print(col[0], end='\t')
  12. print('\n---------------------------------')
  13. while True:
  14. # 获取一条记录,每行数据都是一个元组
  15. row = c.fetchone()
  16. # 如果获取的row为None,则退出循环
  17. if not row:
  18. break
  19. print(row)
  20. print(row[1] + '-->' + row[2])
  21. # 关闭游标
  22. c.close()
  23. # 关闭连接
  24. conn.close()
  25. """从上面的运行结果看,程序返回了所有_id大于2的记录,这就是上面程序查询所返回的结果,
  26. 由于每条select语句都可能返回多个查询结果,因此不能使用executemany()执行查询语句,这
  27. 没什么意义,不要试图使用executeMany()方法执行selecty语句,否则程序将会报错
  28. """

 


  
  1. import sqlite3
  2. print('开始测试fetchmany函数')
  3. conn = sqlite3.connect('first.db')
  4. c = conn.cursor()
  5. c.execute('select * from user_tb where _id>?',(2,))
  6. print('查询返回的记录数', c.rowcount)
  7. for col in (c.description):
  8. print(col[0],end='\t')
  9. print('\n-------------------------------')
  10. while True:
  11. rows = c.fetchmany(3)
  12. if not rows:
  13. break
  14. for x in rows:
  15. print(x)
  16. print(x[1]+'-->'+x[2])

 

 

 


  
  1. #executescript()函数的用法
  2. import sqlite3
  3. conn = sqlite3.connect('first.db')
  4. c = conn.cursor()
  5. c.executescript('''
  6. insert into user_tb values (null,'武松','3444','male');
  7. insert into user_tb values (null,'林冲','44444','male');
  8. create table item_tb(_id integer primary key autoincrement,
  9. name,
  10. price);
  11. ''')
  12. conn.commit()
  13. c.close()
  14. conn.close()

  
  1. #创建自定义函数
  2. import sqlite3
  3. def reverse_ext(st):
  4. return '['+st[::-1]+']'
  5. conn = sqlite3.connect('first.db')
  6. #将reverse_ext函数注册为自定义函数
  7. conn.create_function('enc',1,reverse_ext)
  8. c=conn.cursor()
  9. #在sql中使用enc自定义函数
  10. c.execute('insert into user_tb values(null,?,enc(?),?)',('贾宝玉','123456','male'))
  11. conn.commit()
  12. c.close()
  13. conn.close()

 

 

 

 

 

 

 

三、操作MySql数据库

查看已经安装的模块

pip  show  packagename

启动命令行窗口,在窗口中输入如下命令:

pip show  mysql-connector-python

卸载已经安装的模块

pip  uninstall  packagename

在命令行窗口输入如下命令:

pip  uninstall  mysql-connector-python

查看已安装的所有模块

pip  list 

安装 模块

pip  Install  packagename

在命令行窗口输入如下命令:

pip  install  mysql-connector-python

如果希望安装的时候指定不同版本的模块,则可指定版本号。如下:

pip install packagename  ==1.0.4  

 

 


  
  1. from mysql import connector
  2. print(connector.apilevel)
  3. print(connector.paramstyle)
  4. conn = connector.connect(user='root', password='123456', host='localhost', port='3306', database='python',
  5. use_unicode=True)
  6. c = conn.cursor()
  7. c.execute("""create tabel user_tb(
  8. user_id int primary key auto_increment,
  9. name varchar(255),
  10. pass varchar(255),
  11. gender varchar(255)
  12. )""")
  13. c.execute('insert into user_tb values(null,%s,%s,%s)',('dzx','123','man'))
  14. c.execute('insert into order_tb values(null,%s,%s,%s,%s)',('鼠标','34.3','3','1'))
  15. c.close()
  16. conn.close()

 

 


  
  1. # 调用存储过程
  2. # 编写一个简单的存储过程
  3. # delimiter //
  4. # create procedure add_pro(a int,b int,out sum int)
  5. # begin
  6. # set sum= a+b
  7. # end;
  8. # //
  9. import mysql.connector
  10. conn = mysql.connector.connect(user='root', password='32147', host='localhost', port='3306')
  11. c = conn.cursor()
  12. #调用存储过程
  13. result = c.callproc('add_pro', (1, 2, 0))
  14. #打印结果,既包含传入参数的值,也包含传出参数的值
  15. print(result)
  16. #如果只想访问传出参数的值,则可以直接访问result_args的第3个元素,
  17. print(result[2])
  18. c.close()
  19. conn.close()

 

文章来源: blog.csdn.net,作者:血煞风雨城2018,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_31905135/article/details/101017837

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。