如何在Python中从csv文件创建SQL数据库

时间:2016-05-30 01:47:40

标签: python database csv mysql-python

我需要从csv文件加载一个大型数据集(现在是20gb,但将来会是100 GB)。我在python(PyCharm)中使用MySQLdb模块。我还需要只选择某些列。到目前为止,我已经尝试过这个:

import csv
import MySQLdb

mydb = MySQLdb.connect(host='localhost',
    user='root',
    passwd='',
    db='mydb')
cursor = mydb.cursor()

csv_data = csv.reader(file('collected_quotes_sample.csv'))
for row in csv_data:
    cursor.execute('INSERT INTO testcsv(RIC, Date, Time, Ask, Bid, BAS, window ) VALUES(%s, %s, %s, %s, %s, %s, %s)', row)
#close the connection to the database.
mydb.commit()
cursor.close()
print "Done"

但它提供了许多错误。我是python和SQL数据库的新手,所以我不熟悉命令/代码。所以我有几个问题:

1. with MySQLdb.connect( host,user,passwd,db etc), what are host, user, password etc? to my understanding, they are credentials for my account in the computer. so do I need to put in my user account and password?
2. What does mydb.cursor do?
3. How to upload a csv file into a SQL database? and after the database is created, I can write a python script to work on it and there is no need to re read/create the database?

非常感谢!

2 个答案:

答案 0 :(得分:0)

回答你的问题

  
      
  1. 与MySQLdb.connect(主机,用户,密码,数据库等),什么是主机,用户,密码等?根据我的理解,他们是我的凭据   帐户在电脑里。所以我需要输入我的用户帐户和   密码?
  2.   
  • 回答:host是服务器IP地址+端口号。 user / pwd是您在服务器端创建的客户端用户。并且一个主机可以在内部创建许多DB,因此您需要指定DB。通常在您启动时,您可能正在使用localhost(127.0.0.1),并且端口号是您在创建服务器时定义的。启动服务器后,可以将一个或多个客户端连接到数据库服务器。然后,您需要拥有具有所有权限的超级用户(如root)和其他几个普通用户(可能具有较少的权限)。
  
      
  1. mydb.cursor做什么?
  2.   
  • 答案:cursor是一个可以执行SQL语句等操作的对象。您总是需要Cursor对象与MySQL服务器交互。如果您使用本机SQL脚本与MySQL服务器进行交互,则实际上并不需要此cursor对象,但由于您使用MySQLdb作为Python包装器,因此您需要将其用作DB-API要求您以这种方式与它们接口(游标对象是Python DB-API 2.0中指定的抽象)。
  
      
  1. 如何将csv文件上传到SQL数据库?在创建数据库之后,我可以编写一个python脚本来处理它   没有必要重新读取/创建数据库?
  2.   
  • 回答:通常,您在问题中显示的代码正在执行上传过程。因此,一旦您成功上传,您可以稍后通过使用MySQLdb在Python中实现一些SQL检索语句来检索它。创建数据库后,除非您要删除所有旧数据,否则很少需要重新创建。要使用它,您始终需要来自数据库的read。但是您可以将常用的SQL(或调用一些存储的函数/过程)放入Python代码中,这样您就可以调用一个函数来按照您想要的方式检索数据。

一般来说,我认为你应该在急于使用之前理解more about MySQL basics。以及如何Install MySQL on Windows

答案 1 :(得分:0)

如果你想用Python来创建一个带有Python的SQL数据库,你应该尝试使用SQLite:

import sqlite3
conn = sqlite3.connect("brand_new_db.db")

你完成了。

网上有很多教程。例如,This可能是一个很好的起点。