SQL数据库基本操作,利用python将excel数据写入数据库,或从库中读取出来

时间:2024-01-24 17:10:34

首先介绍一下SQL数据库的一些基本操作:

1创建 2删除 3写入 4更新(修改) 5条件选择

有了以上基本操作,就可以建立并存储一个简单的数据库了。

 

放出python调用的代码: 此处是调用dos 操作数据库 不如下面的简单

# -*- 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'的中文转化问题.

写入数据库时 表单名字不需要提前创建。

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

@author: ext.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