我希望使用python脚本将我的.xls文件数据插入到Mysql数据库中。应该在MySQL中动态创建表并动态地将数据插入到MySQL表中。这是我的代码我能够动态创建“创建表”查询但是无法创建“INSERT”查询。所以请帮助我,谢谢。
import MySQLdb
import xlrd
list = []
list1 = []
i = 0
db = MySQLdb.connect("127.0.0.1","root","rvrj","ravi")
cursor = db.cursor()
str = "create table Table1 ("
workbook = xlrd.open_workbook('C:\\Users\\Meenaraj\\Desktop\\sample - Copy.xls', formatting_info=True)
worksheet = workbook.sheet_by_name('Sheet1')
num_rows = worksheet.nrows - 1
print 'number of rows' , num_rows
num_cells = worksheet.ncols - 1
print 'number of cells' , num_cells
curr_row = 0
while i <= num_cells:
cv=worksheet.cell_value(0,i)
ct=worksheet.cell_type(1,i)
print cv
print ct
if ct == 1:
ct1 = "VARCHAR(20)"
elif ct == 2:
ct1 = "INTEGER"
elif ct == 3:
ct1 = "DATE"
elif ct == 4:
ct1 = "BOOLEAN"
if i < num_cells:
str = str + cv + " " + ct1 + "," + " "
elif i == num_cells:
str = str + cv + " " + ct1 + ");"
list1.append(cv)
i = i + 1
print 'number of cur' , curr_row
while curr_row < num_rows:
curr_row += 1
row = worksheet.row(curr_row)
print 'Row:', curr_row
print row
curr_cell = -1
while curr_cell < num_cells:
curr_cell += 1
# Cell Types: 0=Empty, 1=Text, 2=Number, 3=Date, 4=Boolean, 5=Error, 6=Blank
cell_type = worksheet.cell_type(curr_row, curr_cell)
cell_value = worksheet.cell_value(curr_row, curr_cell)
list.append(cell_value)
#str1 =
print ' ', cell_type, ':', cell_value
data = [worksheet.row_values(i) for i in xrange(worksheet.nrows)]
v=data[1]'''header/col names of My Excel files'''
print str
cursor.execute("DROP TABLE IF EXISTS Table1")
cursor.execute(str)
print "Table created"
str1="INSERT INTO Table1 (FNAME,MNAME,LNAME)VALUES(%s,%s,%s);"
values=(v[0],v[1],v[2])
r=values
cursor.execute(str1,values)
cursor.execute("select * from Table1")
try:
results = cursor.fetchall()
print results
cursor.close()
db.close()
except:
print "Error: unable to fetch data"
答案 0 :(得分:0)
你必须在执行插入查询后添加db.commit(),它会工作。我试过了。
答案 1 :(得分:0)
import pymysql
f = open(r"students.csv","r")
fstring= f.read()
print(fstring)
fList=[]
for line in fstring:
fList.append(line)
db = pymysql.connect(host="localhost",user="root",passwd="",db="teacher")
cursor = db.cursor()
field_names = fList[0]
field_types = fList[1]
query = '''create table ter(
id INT NOT NULL AUTO_INCREMENT,
{0}
'''
my_str = ''
for field_name in field_names:
index = field_names.index(field_name)
my_str += '{0} {1}, '.format(field_name, field_types[index])
query = query.format(my_str)
queryCreatStudentTable = """CREATE table teachweewr (
id INT NOT NULL AUTO_INCREMENT,
FIRST_NAME VARCHAR(255),
LAST_NAME VARCHAR(255),
AGE INT,
SEX VARCHAR(1),
AMOUNT FLOAT(10),
updated_at TIMESTAMP NOT NULL DEFAULT NOW() ON UPDATE NOW(),
created_at TIMESTAMP NOT NULL,
PRIMARY KEY(id)
);"""
sql = """INSERT INTO teachweewr(FIRST_NAME,LAST_NAME,AGE,SEX,AMOUNT,updated_at,created_at)
VALUES ('PRADIP','PRAJAPATI','20','M','200000','NOW()',NOW())"""
cursor.execute(sql)
cursor.execute(queryCreatStudentTable)
db.commit()`enter code here`
db.close()