python对几种数据读写方式以及MySQL数据库

python对几种数据读写方式

  • 对txt的读写
dataSource = open('data.txt',encoding='utf-8',mode='r')

savePath = 'save.txt'
f = open(savePath,encoding='utf-8',mode='w+')# 读取
for lineData in dataSource.readlines():
    dataList = lineData.replace('\n','').split(',')
    print(dataList)
    f.write('\t'.join(dataList) +'\n')
f.close()

当txt作为数据源的时候 要加上encoding=‘utf-8’,防止乱码

  • CSV的读取
    方法一:*
    利用python - csv实现数据读取
csvPath = 'save.csv'
with open(csvPath, newline='',encoding='utf-8') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=',', quotechar='|')
    for row in spamreader:
        print(', '.join(row))

方法二:
利用pandas读取

csvPath = 'save.csv'
df = pandas.read_csv(csvPath,header=0)
print(df)
  • CSV数据写入
    方法一: 借助python - csv
# txt 数据源,需记得加上 encoding='utf-8' 参数,防止乱码
dataSource = open('data.txt',encoding='utf-8',mode='r')
# 利用 python-csv 实现 csv 文件写入
csvPath = 'save.csv'
with open(csvPath, 'w', newline='',encoding='utf-8') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    for index, lineData in enumerate(dataSource.readlines()):
        dataList = lineData.replace('\n', '').split(',')
        spamwriter.writerow(dataList)

方法二:借助pandas

dataSource = open('data.txt',encoding='utf-8',mode='r')
# 利用 pandas 实现 csv 文件写入
csvPath = 'save.csv'
data = []
columnName = []
for index,lineData in enumerate(dataSource.readlines()):
    if(index==0):# 第一行作为列名
        columnName = lineData.replace('\n','').split(',')
        continue
    dataList = lineData.replace('\n','').split(',')
    data.append(dataList)
df =pandas.DataFrame(data,columns =columnName)
# 防止乱码
df.to_csv(csvPath,encoding="utf_8_sig",index=False)

MySQL的读写

MySQL属于典型的关系型数据库,数据表间可以通过外键衔接,这样当一个字段在某个表中得到更新,其它相关联数据表中也会进行自动更新,数据增删改查业务逻辑主要通过 SQL 语句完成,python 操控 MySQL 目前有两类库可以使用,MySQLdb 和 pymysql ,两个库操作mysql 方法相似,核心功能都是依赖于 sql 语句,可以认为提供了一个Python 与 MySQL 连接的接口

  • MySQL连接的初始化
    pymysql 连接 MySQL 时需要配置 ip、端口、用户名、密码、及数据库名称(与 MongoDB 不同的是,MySQL 数据库需要提前创建好)
import pymysql
db_conn = pymysql.connect(host= '127.0.0.1', port= 3306, user= 'root', password= '123456', db= 'db_example')
  • MySQL数据插入

向 MySQL 中插入数据时,可以新建一个表,也可以基于原有数据库中的表进行插入,在下面测试代码中我采用的是前者

# 创建 table data_table
sql1 = " drop table if exists %s;"
sql2 ='''CREATE TABLE %s (
title varchar(1000),
community varchar(1000),
citydirct varchar(1000),
houseinfo varchar(1000),
dateinfo varchar(1000),
taglist varchar(1000),
totalprice varchar(1000),
unitprice varchar(1000)
)
'''
try:
    with db_conn.cursor() as cursor:
        cursor.execute(sql1,"data_table")
        cursor.execute(sql2,"data_table")
        db_conn.commit()
except Exception as e:
        db_conn.rollback()
  • MySQL中插入代码

for lineData in dataSource.readlines()[1:]:
    dataList = lineData.replace('\n', '').split(',')
    # 拼接 sql 插入语句
    insert_sql = 'INSERT data_table (title,community,citydirct,houseinfo,dateinfo,taglist,totalprice,unitprice) VALUES ' + \
                 '("' + '","'.join(dataList) + '")'
    print(insert_sql)
    # 执行sql 语句
    with db_conn.cursor() as cursor:
        cursor.execute(insert_sql)

# 关闭数据库
db_conn.close()

**注意:**pymysql 操作 MySQL 需要注意的是,每执行完 一条或多条 sql 语句时,需要 commit() 一下,否则执行无效

cursor.execute(sql2,"data_table")
db_conn.commit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值