python將excel數據寫入數據庫,或從庫中讀取出來

首先介紹一下SQL數據庫的一些基本操做:python

1建立 2刪除 3寫入 4更新(修改) 5條件選擇mysql

有了以上基本操做,就能夠創建並存儲一個簡單的數據庫了。正則表達式

 

放出python調用的代碼: 此處是調用dos 操做數據庫 不以下面的簡單sql

# -*- coding: utf-8 -*-
"""
Created on Mon May  6 09:59:32 2019

@author: wenzhe.tian
"""


import MySQLdb

# 打開數據庫鏈接
db = MySQLdb.connect("localhost", "root", "twz1478963", "TESTDB", charset='utf8' )  
# 使用cursor()方法獲取操做遊標 
cursor = db.cursor()

# 若是數據表已經存在使用 execute() 方法刪除表。
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
print(cursor.fetchone())
cursor.execute("SELECT VERSION()")


# 建立數據表SQL語句
sql = """CREATE TABLE EMPLOYEE (
         FIRST_NAME  CHAR(20) NOT NULL,
         LAST_NAME  CHAR(20),
         AGE INT,  
         SEX CHAR(1),
         INCOME FLOAT );"""

cursor.execute(sql)

### %\ 替換
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
       LAST_NAME, AGE, SEX, INCOME) \
       VALUES (%s, %s, %s, %s, %s );" % \
       ("'Mac'", "'Mohan'", 20, "'M'", 9000)
         
         
         
try:
   # 執行sql語句
   cursor.execute(sql)
   print(cursor.fetchone())
   # 提交到數據庫執行
   db.commit()
except:
   # Rollback in case there is any error
   db.rollback()
   
### %\ 替換
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
       LAST_NAME, AGE, SEX, INCOME) \
       VALUES (%s, %s, %s, %s, %s );" % \
       ("'John'", "'Will'", 24, "'M'", 12000)
         
         
         
try:
   # 執行sql語句
   cursor.execute(sql)
   print(cursor.fetchone())
   # 提交到數據庫執行
   db.commit()
except:
   # Rollback in case there is any error
   db.rollback()
   
   
sql = "SELECT * FROM EMPLOYEE \
       WHERE first_name like %s" % ("'%h_'");
       
'''
WHERE A and/or B between in(A,B)
% 表示多個字值,_ 下劃線表示一個字符;
M% : 爲能配符,正則表達式,表示的意思爲模糊查詢信息爲 M 開頭的。
%M% : 表示查詢包含M的全部內容。
%M_ : 表示查詢以M在倒數第二位的全部內容
'''
       
# DELETE FROM EMPLOYEE WHERE AGE <20       
       
try:
   # 執行SQL語句
   cursor.execute(sql)
   # 獲取全部記錄列表
   results = cursor.fetchall()
   for row in results:
      fname = row[0]
      lname = row[1]
      age = row[2]
      sex = row[3]
      income = row[4]
      # 打印結果
      print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \
             (fname, lname, age, sex, income ))
except:
   print ("Error: unable to fecth data")
   
# 關閉數據庫鏈接
db.close()
View Code

 

以上代碼即將SQL語言寫出字符的形式 並調用接口執行操做。數據庫

下面放一些存儲excel至新建數據庫的例子做爲參考: 此處是調用dataframe的to_sql進行操做 須要注意的是encoding='gbk'的中文轉化問題.app

寫入數據庫時 表單名字不須要提早建立。ide

# -*- coding: utf-8 -*-
"""
Created on Tue May  7 15:40:23 2019

@author: wenzhe.tian
"""


from sqlalchemy import create_engine
import pandas as pd

host = '127.0.0.1'
port= 3306
db = 'beilixinyuan'
user = 'root'
password = 'twz1478963'

engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s?charset=utf8") % (user, password, host, db))



try:
#   df = pd.read_csv(r'D:\2PHEV_v3.csv',encoding='gbk')
#   讀取  
    table='sale_phev'
    sql = "SELECT * FROM "+'%s' %(table)
    df=pd.read_sql(sql,con=engine)
#    寫入
#    df.to_sql('sale_ev', con=engine, if_exists='append', index=False)
except Exception as e:

    print(e.message)
    


# 導出方法2
#'''
#WHERE A and/or B between in(A,B)
#% 表示多個字值,_ 下劃線表示一個字符;
#M% : 爲能配符,正則表達式,表示的意思爲模糊查詢信息爲 M 開頭的。
#%M% : 表示查詢包含M的全部內容。
#%M_ : 表示查詢以M在倒數第二位的全部內容
#'''
#
#
#
import MySQLdb
import pandas as pd
# 打開數據庫鏈接
db = MySQLdb.connect("localhost", "root", "twz1478963", "beilixinyuan", charset='utf8' )  
# 使用cursor()方法獲取操做遊標 
cursor = db.cursor(cursorclass=MySQLdb.cursors.DictCursor)


sql = "SELECT * FROM sale_ev"
       

# DELETE FROM EMPLOYEE WHERE AGE <20       
       
try:
   # 執行SQL語句
   cursor.execute(sql)
   # 獲取全部記錄列表
   results = cursor.fetchall()
   pd.read_sql(sql,con=engine)
 
except:
   print ("Error: unable to fecth data")
   
h=list(results)
df=pd.DataFrame(h)
del results
del h
View Code
相關文章
相關標籤/搜索