Python读写数据-数据库MySQL

使用Python调用数据库中的数据,将数据存储到数据库中,以便使用和初步的数据计算

使用方式

方式有多种,主要介绍两种,一种h是使用原生的SQL,一种是采用ORM的方式
  方式一: import PyMySQL
                        pip3 install PyMySQL
                        pip install PyMySQL
              import MySQLdb   python3中,这个库已经不能继续使用了
              步骤:连接数据库→创建游标→
                          执行SQLfetch获得数据,进行业务处理→
                          关闭游标→commit→关闭数据库连接
                联合pandas使用--连接数据库-pandas.read_sql-关闭连接
方式二: import sqlalchemy 
          SQLAlchemy本身无法操作数据库,其必须以来pymsql等第三方插件
          ORM(object relation mapping) 对象关系映射关系
其他: cx_Oracle

数据持久化:
   数据持久化(PO)就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称.
  数据模型可以是任何数据结构或对象模型,
   存储模型可以是关系模型、XML、二进制流等

pymysql介绍

参数说明
 pymysql.Connect()参数说明
   host(str):      MySQL服务器地址
   port(int):      MySQL服务器端口号
   user(str):      用户名
   passwd(str):    密码
   db(str):        数据库名称
   charset(str):   连接编码  
 connection对象支持的方法
    cursor()        使用该连接创建并返回游标
    commit()        提交当前事务
    rollback()      回滚当前事务
    close()         关闭连接    
cursor对象支持的方法
   execute(op)     执行一个数据库的查询命令
   fetchone()      取得结果集的下一行
   fetchmany(size) 获取结果集的下几行
   fetchall()      获取结果集中的所有行
   rowcount()      返回数据条数或影响行数
   close()         关闭游标对象

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#! /usr/bin/python
# -*- coding:utf-8 -*-

import pymysql
import pandas as pd

# 创建连接
conn = pymysql.connect(host='localhost', user='root', password='*******', db='jdata', charset='utf8')
# 执行SQL-使用pandas
sql = 'show tables  '
print(sql)
df_mysql = pd.read_sql(sql, con=conn)
print 'loaded dataframe from MySQL. records:',  df_mysql
print(type(df_mysql))
print(df_mysql.dtypes)
print(dir(df_mysql))
print(len(df_mysql))
K = len(df_mysql)


sql2 = 'select count(*) from ' + df_mysql + ';'
print(sql2.columns)
# print(sql2['Tables_in_jdata'][0])
findata_list = []
for sqlquery in sql2['Tables_in_jdata']:
print(sqlquery)
df_mysql2 = pd.read_sql(sqlquery, con=conn)
print(df_mysql2)
findata_list.append(sqlquery)
findata_list.append(df_mysql2)
tableDF = pd.DataFrame(findata_list)
print(type(tableDF))
tableDF.to_csv( 'C:\\Users\\Desktop\\jdata-jd\\jdata_table_info.txt' )

# 关闭连接
conn.close()

方式二:SQLAlchemy

 SQLAlchemy - 隐藏数据库,良好的数据接口,动态的数据映射,引入缓存)
 步骤-
 创建连接--声明映射文件--创建模式--初始化映射类实例--创建回话--持久化实例对象
 涉及的对象和命令
 create_engine

其他编程语言中数据库连接

Java中JDBC
 建立Statement对象或PrepareStatement对象,执行SQL语句
   Statement用来执行不带参数的简单的SQL语句
   PreparedStatement表示预编译的SQL语句的对象,用于执行带参数的预编译SQL语句
ResultSet对象
     getString()、getInt()和getData()等方法从ResultSet中获取数据
Scala中JDBC
 //建立mysql数据库连接
 def getMysqlConnection : Connection = {
 Class.forName("com.mysql.jdbc.Driver")
 DriverManager.getConnection("url","username",  "password")
   }
    conn = getMysqlConnection
    sql ='show tables'
    ps = conn.prepareStatement(sql)
    ps.executeBatch()
    conn.commit()
    ps.close()
    conn.close()

blogroll

social