python跟数据库连接,python与数据库之间的连接

  python跟数据库连接,python与数据库之间的连接

  # -*-编码:utf-8 -*-

  创建于Sun 2018年11月18日19:25:01

  @作者:wangm

  #使用Python附带的sqlite3模块

  #在数据库中创建一个表,将数据插入表中,并在输出和计数行中获取数据。

  #!/usr/bin/env python3

  #导入sqlite3模块

  导入sqlite3

  #创建代表数据库的连接对象。这里,使用特殊术语:memory:在内存中创建一个数据库。

  #您也可以使用其他名称。此时,创建的数据库将保存在您的工作目录中,或者您自己指定的路径中。

  con=sqlite3.connect(:memory:)

  # con=sqlite3 . connect( my database )

  #创建具有四个属性的sales表

  #此处的查询中有多行,请使用"""

  查询= 创建销售表

  (客户varchar(20)、

  产品varchar(40),

  金额浮动,日期日期);

  #在查询中执行sql命令

  con.execute(查询)

  #提交对数据库所做的更改,即保存到数据库中。

  con.commit()

  #在表格中插入四行数据

  data=[(AAA ,苹果,10000.0, 2018-01-01 ),

  ( BBB ,华为,5000.0, 2018-02-01 ),

  ( CCC , Mi ,3000.0, 2018-03-01)]

  #语句在这里只有一行,所以可以用“

  #这里?是占位符。在connect对象的con.execute()或con.executemany()方法中,您需要提供

  #一个包含四个值的元组,元组中的值会按位置替换到sql语句中。

  #这种替代方法的另一个优点是可以防止SQL注入攻击。

  statement=插入销售值(?)

  #对数据中的每个数据元组执行语句中的命令,这里是四次。

  con.executemany(语句,数据)

  #注意,这里不能使用con.execute()方法。

  #错误消息:编程错误:提供的绑定数量不正确。当前语句使用4,提供了3个。

  #con.execute(语句,数据)

  con.commit()

  #查询销售表

  #执行SQL语句 select * from sales ,并将结果分配给游标对象cursor。

  cursor=con . execute( select * from sales )

  # fetchall()取出SQL返回的所有行,并将它们分配给行。

  rows=cursor.fetchall()

  #行的类型类“列表”

  #print(类型(行数))

  #输出查询的每一行,并计算行数

  #row_counter=0

  #对于行中的行:

  #打印(行)

  #row_counter=1

  #print(row_counter是%d % (row_counter))

  输出结果:

  ( AAA ,苹果,10000.0, 2018-01-01 )

  ( BBB ,华为,5000.0, 2018-02-01 )

  ( CCC , Mi ,3000.0, 2018-03-01 )

  row_counter为3

  #根据上面对SQL的操作,以及之前对CSV文件和Excel文件的操作,可以很简单

  #在数据库中存储一个CSV文件或Excel文件,成为数据库中的一个表

  #以CSV文件为例,即读取CSV文件中的每一行数据,使用insert,插入到数据库中。

  #除了上面提到的数据库创建、表创建、向表中插入数据以及在表中查询数据

  #您还可以在con.execute()中执行其他插入和删除操作

  #插入:

  con.execute(插入销售值(?),( DDD ,魅族,2000.0, 2018-04-01 ))

  con.commit()

  cursor=con . execute( select * from sales )

  rows=cursor.fetchall()

  row_counter=0

  对于行中的行:

  打印(行)

  row_counter=1

  print(row_counter是%d % (row_counter))

  #修改

  temp=[2500.0, 2018-05-01 , DDD]

  con.execute(更新销售集金额=?日期=?其中客户=?温度)

  con.commit()

  cursor=con . execute( select * from sales )

  rows=cursor.fetchall()

  row_counter=0

  对于行中的行:

  打印(行)

  row_counter=1

  print(row_counter是%d % (row_counter))

  #删除

  temp=[CCC]

  con . execute( delete from sales where customer=?温度)

  con.commit()

  cursor=con . execute( select * from sales )

  rows=cursor.fetchall()

  row_counter=0

  对于行中的行:

  打印(行)

  row_counter=1

  print(row_counter是%d % (row_counter))

  输出结果:

  ( AAA ,苹果,10000.0, 2018-01-01 )

  ( BBB ,华为,5000.0, 2018-02-01 )

  ( CCC , Mi ,3000.0, 2018-03-01 )

  ( DDD ,魅族,2000.0, 2018-04-01 )

  row_counter为4

  ( AAA ,苹果,10000.0, 2018-01-01 )

  ( BBB ,华为,5000.0, 2018-02-01 )

  ( CCC , Mi ,3000.0, 2018-03-01 )

  ( DDD ,魅族,2500.0, 2018-05-01 )

  row_counter为4

  ( AAA ,苹果,10000.0, 2018-01-01 )

  ( BBB ,华为,5000.0, 2018-02-01 )

  ( DDD ,魅族,2500.0, 2018-05-01 )

  row_counter为3

  上面的代码(以Python内置的sqlite为例)展示了如何连接数据库,在数据库中创建新表,以及添加、删除和检查表。

  当我要连接到MySQL时,出现了以下错误:

  #!/usr/bin/env python3

  导入csv

  导入MySQLdb

  #从日期时间导入日期时间,日期

  input _ file= D:\ wangm \ Documents \ learning \ code \ python \ supplier _ data . CSV

  con=mysqldb . connect(host= localhost ,port=3306,db=test ,user=root ,passwd=1126 )

  c=图标光标()

  file _ reader=CSV . reader(open(input _ file, r ,newline= ))

  header=next(file_reader)

  对于file_reader中的行:

  数据=[]

  对于范围内的column _ index(len(header)):

  data . append(str(row[column _ index])。lstrip($ )。替换(,, )。strip())

  打印(数据)

  c.execute(插入到供应商值(%s,%s,%s,% s);,数据)

  con.commit()

  打印()

  错误消息:OperationalError: (2059,NULL)

  在网上找到的错误原因:MySQL8.0使用的新的认证加密方法导致了这个错误。

  根据上面的文章,我尝试更新了以下相关库,相关库的更新版本如下:

  再次运行上述代码仍然会出现错误。

  以上文章还提供了另一种卸载MySQL并选择之前版本的方法。

  请注明出处。

  版权归作者所有:来自博主的原创作品,荒诞又年轻。转载授权请联系作者,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些
  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些,关系型数据库与非关系型数据库简介
  • 关于redis数据库入门详细介绍图片,redis数据库的使用,关于Redis数据库入门详细介绍
  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 什么是分库分表,为什么要进行分库分表-,分库分表的区别,数据库分库分表是什么,什么情况下需要用分库分表
  • vb中adodb连接数据库,
  • treeview控件绑定数据,wpf treeview数据绑定,详解TreeView绑定数据库
  • sql的多表查询,数据库如何实现多表查询
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库,SQLServer2019 数据库的基本使用之图形化界面操作的实现
  • sql数据库定时备份怎么弄,mysql 定期备份
  • sql数据库定时备份怎么弄,mysql 定期备份,MySQL 数据库定时备份的几种方式(全面)
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar,SQL中varchar和nvarchar的基本介绍及其区别
  • 留言与评论(共有 条评论)
       
    验证码: