如何用python将csv文件写入sql数据库

时间:2016-07-20 08:36:10

标签: python sql

我有csv文件,其中包含有关计算机的一些信息,如ostype,ram,cpu值和ı有sql数据库,已经有相同的信息,我想用python脚本更新该数据库表。数据库表和csv文件具有uniqe“id”参数。

import csv
with open("Hypersanal.csv") as csvfile:
 readCSV = csv.reader(csvfile, delimiter=';')
 for row in readCSV:
  print row

1 个答案:

答案 0 :(得分:0)

根据数据库的类型,对代码进行一些细微的调整 对于此示例,我将SQLAlchemypymysql驱动程序一起使用。要找出连接字符串的第一部分应该是什么(取决于您要连接的数据库的类型),请选中SQLAlchemy Doc about Dialects

首先,我们导入必要的模块

dialect_part = "mysql+pymysql://"
# username is the usernmae we'll use to connect to the db, and password the corresponding password
# server_name is the name fo the server where the db is. It INCLUDES the port number (eg : 'localhost:9080')
# database is the name of the db on the server we'll work on
connection_string = dialect_part+username+":"+password+"@"+server_name+"/"+database

然后,我们创建连接字符串

Base = declarative_base()
engine = create_engine(connection_string)
metadata = MetaData(bind=engine)

SQLAlchemy需要更多设置:

class TableWellHit(Base):
    __table__ = Table(name_of_the_table, metadata, autoload=True)

现在,我们有一个指向数据库的链接,但在能够对它做任何事情之前还需要做一些工作 我们创建一个对应于我们点击的数据库表的类。本课程将自动填写'根据表在db中的方式。您也可以手动填写。

session = create_session(bind=engine)

现在,为了能够与表进行交互,我们需要创建一个会话:

import csv
with open("Hypersanal.csv") as csvfile:
    readCSV = csv.reader(csvfile, delimiter=';')
    for row in readCSV:
        # print row
        # I chose to push each value from the db one by one
        # If you're sure there won't be any duplicates for the primary key, you can put the session.begin() before the for loop
        session.begin()

        # I create an element for the db
        new_element = TableWellHit(field_in_table=row[field])

现在,我们需要开始会话,我们将被设置。 现在将使用您的代码。

TableWellHit(username=row['user],password=row['pass'])

这方面的一个例子,想象一下你需要fiels'用户名'和密码'在表格中,行包含一个包含' user'的字典。并且'通过'作为钥匙。
元素将由以下内容创建: # I add the element to the table # I choose to merge instead of add, so as to prevent duplicates, one more time session.merge(new_element) # Now, we commit our changes to the db # This also closes the session # if you put the session.begin() outside of the loop, do the same for the session.commit() session.commit()

pip install pymssql

希望这能回答你的问题,如果他不这样做,请告诉我,以便我能够纠正我的答案。

编辑:
对于MSSQL:
- 安装pymssqlconnection_string
根据此SQLAlchemy pagemssql+pymssql://<username>:<password>@<freetds_name>/?charset=utf8应采用以下格式:{{1}}

使用merge可以创建或更新值,具体取决于它是否已存在。