python导入数据库代码(python数据导入数据库)

http://www.itjxue.com  2023-04-03 10:35  来源:未知  点击次数: 

如何在Python 中导入access 数据?

Python操作Access数据库步骤之1、建立数据库连接

import win32com.client

conn = win32com.client.Dispatch(r'ADODB.Connection')

DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:/MyDB.mdb;'

conn.Open(DSN)

Python操作Access数据库步骤之2、打开一个记录集

rs = win32com.client.Dispatch(r'ADODB.Recordset')

rs_name = 'MyRecordset'#表名

rs.Open('[' + rs_name + ']', conn, 1, 3)

Python操作Access数据库步骤之3、对记录集操作

rs.AddNew()

rs.Fields.Item(1).Value = 'data'

rs.Update()

Python操作Access数据库步骤之4、用SQL来插入或更新数据

conn = win32com.client.Dispatch(r'ADODB.Connection')

DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:/MyDB.mdb;'

sql_statement = "Insert INTO [Table_Name] ([Field_1],

[Field_2]) VALUES ('data1', 'data2')"

conn.Open(DSN)

conn.Execute(sql_statement)

conn.Close()

Python操作Access数据库步骤之5、遍历记录

rs.MoveFirst()

count = 0

while 1:

if rs.EOF:

break

else:

countcount = count + 1

rs.MoveNext()

注意:如果一个记录是空的,那么将指针移动到第一个记录将导致一个错误,因为此时recordcount是无效的。解决的方法是:打开一个记录集之前,先将Cursorlocation设置为3,然后再打开记录集,此时recordcount将是有效的。例如:

rs.Cursorlocation = 3 # don't use parenthesis here

rs.Open('Select * FROM [Table_Name]', conn) # be sure conn is open

rs.RecordCount # no parenthesis here either

掌握Python 操作 MySQL 数据库

本文Python 操作 MySQL 数据库需要是使用到 PyMySQL 驱动

Python 操作 MySQL 前提是要安装好 MySQL 数据库并能正常连接使用,安装步骤详见下文。

注意: 安装过程我们需要通过开启管理员权限来安装,否则会由于权限不足导致无法安装。

首先需要先下载 MySQL 安装包, 官网下载地址 下载对应版本即可,或直接在网上拉取并安装:

权限设置:

初始化 MySQL:

启动 MySQL:

查看 MySQL 运行状态:

Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:

登陆:

创建数据库:

查看数据库:

PyMySQL 模块使用 pip命令进行安装:

假如系统不支持 pip 命令,可以使用以下方式安装:

pymysql .connect 函数:连接上数据库

输出结果显示如下:表面数据库连接成功

使用 pymysql 的 connect() 方法连接数据库,connect 参数解释如下:

conn.cursor():获取游标

如果要操作数据库,光连接数据是不够的,咱们必须拿到操作数据库的游标,才能进行后续的操作,游标的主要作用是用来接收数据库操作后的返回结果,比如读取数据、添加数据。通过获取到的数据库连接实例 conn 下的 cursor() 方法来创建游标,实例如下:

输出结果为:

cursor 返回一个游标实例对象,其中包含了很多操作数据的方法,如执行sql语句,sql 执行命令: execute() 和 executemany()

execute(query,args=None):

executemany(query,args=None):

其他游标对象如下表:

完整数据库连接操作实例如下:

以上结果输出为:

创建表代码如下:

如下所示数据库表创建成功:

插入数据实现代码:

插入数据结果:

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

查询数据代码如下:

输出结果:

DB API中定义了一些数据库操作的错误及异常,下表列出了这些错误和异常:

本文给大家介绍 Python 如何连接 Mysql 进行数据的增删改查操作,文章通过简洁的代码方式进行示例演示,给使用 Python 操作 Mysql 的工程师提供支撑。

在python中怎么引入数据库

数据库版本:MySQL

Python版本:3.5

之前用想用MySQLdb来着,后来发现py3.5版本不支持,现选择pymysql

现在想将数据库adidas中的表jd_comment读取至python中的DataFrame,方便数据分析处理

import pymysql

import pandas as pd

import numpy as np

try:

conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='adidas', charset='UTF8')

cur = conn.cursor()

cur.execute('select * from jd_comment')

rows = cur.fetchall() #获取元组列表

cur.close()

conn.close()

except pymysql.Error as e:

print('Mysql Error %d: %s' %(e.args[0], e.args[1]))

cols = list(zip(*cur.description)) #可以看到列名(由元组构成)

#将数据库中的数据保存为DataFrame(数据必须是字典或者数组,列表也必须是list或者数组)

adidas = pd.DataFrame(np.array(rows), columns=list(cols[0]))

如何用python批量插入数据到mysql数据库,用list

MySQL 的 Binlog 记录着 MySQL 数据库的所有变更信息,了解 Binlog 的结构可以帮助我们解析Binlog,甚至对 Binlog 进行一些修改,或者说是“篡改”,例如实现类似于 Oracle 的 flashback 的功能,恢复误删除的记录,把 update 的记录再还原回去等。本文将带您探讨一下这些神奇功能的实现,您会发现比您想象地要简单得多。本文指的 Binlog 是 ROW 模式的 Binlog,这也是 MySQL 8 里的默认模式,STATEMENT 模式因为使用中有很多限制,现在用得越来越少了。

Binlog 由事件(event)组成,请注意是事件(event)不是事务(transaction),一个事务可以包含多个事件。事件描述对数据库的修改内容。

现在我们已经了解了 Binlog 的结构,我们可以试着修改 Binlog 里的数据。例如前面举例的 Binlog 删除了一条记录,我们可以试着把这条记录恢复,Binlog 里面有个删除行(DELETE_ROWS_EVENT)的事件,就是这个事件删除了记录,这个事件和写行(WRITE_ROWS_EVENT)的事件的数据结构是完全一样的,只是删除行事件的类型是 32,写行事件的类型是 30,我们把对应的 Binlog 位置的 32 改成 30 即可把已经删除的记录再插入回去。从前面的 “show binlog events” 里面可看到这个 DELETE_ROWS_EVENT 是从位置 378 开始的,这里的位置就是 Binlog 文件的实际位置(以字节为单位)。从事件(event)的结构里面可以看到 type_code 是在 event 的第 5 个字节,我们写个 Python 小程序把把第383(378+5=383)字节改成 30 即可。当然您也可以用二进制编辑工具来改。

找出 Binlog 中的大事务

由于 ROW 模式的 Binlog 是每一个变更都记录一条日志,因此一个简单的 SQL,在 Binlog 里可能会产生一个巨无霸的事务,例如一个不带 where 的 update 或 delete 语句,修改了全表里面的所有记录,每条记录都在 Binlog 里面记录一次,结果是一个巨大的事务记录。这样的大事务经常是产生麻烦的根源。我的一个客户有一次向我抱怨,一个 Binlog 前滚,滚了两天也没有动静,我把那个 Binlog 解析了一下,发现里面有个事务产生了 1.4G 的记录,修改了 66 万条记录!下面是一个简单的找出 Binlog 中大事务的 Python 小程序,我们知道用 mysqlbinlog 解析的 Binlog,每个事务都是以 BEGIN 开头,以 COMMIT 结束。我们找出 BENGIN 前面的 “# at” 的位置,检查 COMMIT 后面的 “# at” 位置,这两个位置相减即可计算出这个事务的大小,下面是这个 Python 程序的例子。

切割 Binlog 中的大事务

对于大的事务,MySQL 会把它分解成多个事件(注意一个是事务 TRANSACTION,另一个是事件 EVENT),事件的大小由参数 binlog-row-event-max-size 决定,这个参数默认是 8K。因此我们可以把若干个事件切割成一个单独的略小的事务

ROW 模式下,即使我们只更新了一条记录的其中某个字段,也会记录每个字段变更前后的值,这个行为是 binlog_row_image 参数控制的,这个参数有 3 个值,默认为 FULL,也就是记录列的所有修改,即使字段没有发生变更也会记录。这样我们就可以实现类似 Oracle 的 flashback 的功能,我个人估计 MySQL 未来的版本从可能会基于 Binlog 推出这样的功能。

了解了 Binlog 的结构,再加上 Python 这把瑞士军刀,我们还可以实现很多功能,例如我们可以统计哪个表被修改地最多?我们还可以把 Binlog 切割成一段一段的,然后再重组,可以灵活地进行 MySQL 数据库的修改和迁移等工作。

python 导入txt到数据库 每8行写入

#?8行结束有一个空白行

with?open('data.txt')?as?data:

????line?=?1

????sql?=?'insert?into?fz_esx?values(%s,%s,%s,%s,%s,%s,%s,%s)'

????values?=?[]

????for?d?in?data:

????????if?d?!=?'':

????????????values.append('"%s"'?%?str(d))

????????if?line?%?9?==?0:

????????????#?执行sql插入代码

????????????#?urs.exec(sql?%?tuple(values))

????????????del?values[:]

????????line?+=?1

????????

#?当然如果不行浪费sql资源,可以全部拼接完inert语句?一次执行

#?如果是生产环境,?建议使用队列的思路,例如"芹菜"库

(责任编辑:IT教学网)

更多

推荐Fireworks教程文章