首先介绍一下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
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: 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
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
Original: https://www.cnblogs.com/techs-wenzhe/p/10819289.html
Author: 冻雨冷雾
Title: python将excel数据写入数据库,或从库中读取出来
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/564544/
转载文章受原作者版权保护。转载请注明原作者出处!