Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python读取文本文件并将内容传输到mysql数据库表_Python_Python 3.x - Fatal编程技术网

使用python读取文本文件并将内容传输到mysql数据库表

使用python读取文本文件并将内容传输到mysql数据库表,python,python-3.x,Python,Python 3.x,我不熟悉使用python编程进行数据库处理。 通过使用python编程,我想读取由STUDEN T_NAME、STUDENT_MARKS组成的原始文本文件。这些数据由管道符号分隔(如下例所示),我想将这些数据推送到student表中,该表由两列(student_名称、student_标记)和各自的数据值组成 输入数据文件将是这样的(它由数千条这样的记录组成),我的输入文件是.Dat文件,它只以记录开始,每行包含0条或更多的记录(每行上没有固定的记录数),没有其他关键字出现在任何地方: 记录学生|

我不熟悉使用python编程进行数据库处理。
通过使用python编程,我想读取由STUDEN T_NAME、STUDENT_MARKS组成的原始文本文件。这些数据由管道符号分隔(如下例所示),我想将这些数据推送到student表中,该表由两列(student_名称、student_标记)和各自的数据值组成

输入数据文件将是这样的(它由数千条这样的记录组成),我的输入文件是.Dat文件,它只以记录开始,每行包含0条或更多的记录(每行上没有固定的记录数),没有其他关键字出现在任何地方:

记录学生|姓名|杰克|学生|分数| 200 |学生|姓名|克拉克 |学生分数| 200 |学生名字| Ajkir |学生分数| 30 | 学生名| Aqqm |学生分数| 200 |学生名| jone | 学生| 200分|学生|姓名|杰克|学生| 100分|

输出mysql表::

学生|姓名|学生|分数

请建议我以有效的方式读取文件和推送数据。 如果有人能给我一些脚本来实现这一点,我将不胜感激。

本着的精神,一些代码可以帮助您开始:

# import mysql module
import MySQLDB

# import regular expression module
import re

# set file name & location (note we need to create a temporary file because 
# the original one is messed up)

original_fyle = open('/some/directory/some/file.csv', 'r')
ready_fyle = open('/some/directory/some/ready_file.csv', 'w')


# initialize & establish connection 
con = MySQLdb.connect(host="localhost",user="username", passwd="password",db="database_name") 
cur = con.cursor()

# prepare your ready file 

for line in original_fyle:
    # substitute useless information this also creates some formatting for the 
    # actuall loading into mysql
    line = re.sub('STUDENT_NAME|', '\n', line) 
    line = re.sub('STUDENT_MARKS|', '', line)
    ready_fyle.write(line)

# load your ready file into db

# close file
ready_file.close()

# create a query 
query = 'load data local infile "/some/directory/some/ready_file.csv" into table table_name field terminated by "|" lines terminated by "\n" '
# run it 
cur.execute(query)
# commit just in case 
cur.commit()
# assuming your data is exactly as in the original question
data = '''records STUDENT_NAME| jack | STUDENT_MARKS|200| STUDENT_NAME| clark |STUDENT_MARKS|200| STUDENT_NAME| Ajkir | STUDENT_MARKS|30| STUDENT_NAME| Aqqm | STUDENT_MARKS|200| STUDENT_NAME| jone | STUDENT_MARKS|200| STUDENT_NAME| jake | STUDENT_MARKS|100|'''

data  = data.split('|')

for idx in range(1, len(data), 4):
    # every second item in the list is a name and every fourth is a mark
    name = data[idx].strip() # need to add code to check for duplicate names
    mark = int(data[idx+2].strip()) # this will crash if not a number
    print(name, mark) # use these values to add to the database
您可能需要使用来学习如何将此类数据库与Python一起使用。 而且可能有用


您可能需要从这个开始,然后。

还需要准确描述输入文件中的内容。它是以
记录开始的吗?该关键字或任何其他关键字是否出现在其他地方?每一行是否包含一个学生记录,或者是否有一个包含数千条记录的长行?嗨,gauden,我的输入文件是.Dat文件,它只以记录开始,每一行包含0条或更多条记录(每一行没有固定数量的记录),没有其他关键字出现在任何地方,请建议我。
# assuming your data is exactly as in the original question
data = '''records STUDENT_NAME| jack | STUDENT_MARKS|200| STUDENT_NAME| clark |STUDENT_MARKS|200| STUDENT_NAME| Ajkir | STUDENT_MARKS|30| STUDENT_NAME| Aqqm | STUDENT_MARKS|200| STUDENT_NAME| jone | STUDENT_MARKS|200| STUDENT_NAME| jake | STUDENT_MARKS|100|'''

data  = data.split('|')

for idx in range(1, len(data), 4):
    # every second item in the list is a name and every fourth is a mark
    name = data[idx].strip() # need to add code to check for duplicate names
    mark = int(data[idx+2].strip()) # this will crash if not a number
    print(name, mark) # use these values to add to the database