我需要从csv文件中获取数据并将其导入到同一数据库中的两个mysql表中。在
CSV文件:
username,password,path
FP_Baby,7tO0Oj/QjRSSs16,FP_Baby
lukebryan,uu00U62SKhO.sgE,lukebryan
saul,r320QdyLJEXKEsQ,saul
jencarlos,LOO07D5ZxpyzMAg,jencarlos
abepark,HUo0/XGUeJ28jaA,abepark
从CSV文件
username
和password
进入USERS表
path
进入VFS\u权限表
USERS表看起来像
^{pr2}$如果可能的话,我希望在两个表中以24开始userid,并为csv中的每一行递增+1。在
到目前为止,我可以阅读csv文件,但我不知道如何插入到两个mysql表中。在
#!/usr/bin/env python
import csv
import sys
import MySQLdb
conn = MySQLdb.connect(host= "localhost",
user="crushlb",
passwd="password",
db="crushlb")
x = conn.cursor()
f = open(sys.argv[1], 'rt')
try:
reader = csv.reader(f)
for row in reader:
## mysql stuff goes here right?
finally:
f.close()
由于您已经知道要执行的sql语句,因此使用
cursor.execute
方法应该比较简单:通过提前(在循环中)准备参数并在循环完成后调用
cursor.executemany
,可以减少对cursor.execute
的调用次数:INSERT IGNORE
告诉MySQL尝试在MySQL表中插入行,但是如果存在冲突,则忽略该命令。例如,如果userid是主键,并且已经有一行具有相同的userid,INSERT IGNORE
SQL将忽略插入新行的命令,因为这将创建两个具有相同主键的行。在如果没有
IGNORE
,cursor.executemany
命令将引发异常并无法插入任何行。在我使用了
INSERT IGNORE
,因此您可以多次运行代码,而不会cursor.executemany
引发异常。在还有一个
INSERT ... ON DUPLICATE KEY UPDATE
命令,它告诉MySQL尝试插入一个行,但是如果有冲突,就更新它,但是除非您想了解更多关于ON DUPLICATE KEY
的信息,否则我就不谈了。在相关问题 更多 >
编程相关推荐