2016-05-30 95 views
2

我需要从csv文件中加载大型数据集(现在20GB,但将来100GB)。我在Python中使用MySQLdb模块(PyCharm)。我也只需要选择一些特定的列。到目前为止,我已经尝试过:如何从Python中的csv文件创建SQL数据库

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? 

非常感谢!

+0

你真的有本地主机上的MySQL服务器设置? – Keatinge

+0

蟒蛇MySQLdb只是一个客户端,可以连接到真正的MySQL服务器 – YOU

+0

@Keatinge我不认为我有MySQL服务器设置。我怎样才能做到这一点?谢谢 – duckman

回答

0

回答您的问题

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

    一般来说,我想你应该在冲过去之前了解more about MySQL basics。以及如何Install MySQL on Windows

    +0

    @duckman,您可能首先要经过[MySQL Tutorial](http://www.mysqltutorial.org/) – 2342G456DI8

    +0

    非常感谢您的详细解答,我非常感谢。您能否将我的代码更具体地上传到SQL数据库?特别是,我想从我的计算机上的大型csv文件创建一个SQL数据库。我如何创建一个服务器?我需要用户名和密码吗?或'根'是好的用户名?而我的代码中的'localhost'似乎不起作用。非常感谢您使用教程链接 – duckman

    +0

    。我会通过他们 – duckman

    0

    如果你想只是为了用两种语言播放的缘故创建与Python的SQL数据库,你应该尝试的SQLite:

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

    和你做。

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

    +0

    谢谢,有太多的教程网站,我不知道哪一个是好的。你的看起来很小巧,而且很好。 sqlite3和MySQLdb模块有什么不同吗? – duckman

    相关问题