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

举报
小米粒-biubiubiu 发表于 2020/12/03 23:46:00 2020/12/03
2.9k+ 0 0
【摘要】 一、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数据库


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

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

 

 


      #executescript()函数的用法
      import sqlite3
      conn = sqlite3.connect('first.db')
      c = conn.cursor()
      c.executescript('''
      insert into user_tb values (null,'武松','3444','male');
      insert into user_tb values (null,'林冲','44444','male');
      create table item_tb(_id integer primary key autoincrement,
       name,
        price);
      ''')
      conn.commit()
      c.close()
      conn.close()
  
 

      #创建自定义函数
      import  sqlite3
      def reverse_ext(st):
      return '['+st[::-1]+']'
      conn = sqlite3.connect('first.db')
      #将reverse_ext函数注册为自定义函数
      conn.create_function('enc',1,reverse_ext)
      c=conn.cursor()
      #在sql中使用enc自定义函数
      c.execute('insert into user_tb values(null,?,enc(?),?)',('贾宝玉','123456','male'))
      conn.commit()
      c.close()
      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  

 


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

 


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

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

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

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

作者其他文章

评论(0

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

    全部回复

    上滑加载中

    设置昵称

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

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

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