项目是软硬件结合,在缺少设备的情况,需要通过接口来模拟实现与设备的交互,其中就需要通过从数据库读取商品的ID信息

出于安全考虑  现在很多数据库都不允许通过直接访问,大多数是通过SSH

SSH : 数据库开放哪台机器访问,就通过哪台机器的SSH跳过去

例如:数据库在A机器,只能通过B来访问,本机C来链接B链接A的数据库

链接数据库与简单操作:

链接数据库:
import MySQLdb
#打开数据库链接
lcDB = MySQLdb.connect("127.0.0.1", "%”,"","go" )

简单数据库操作:

创建数据库表:
 import MySQLdb
#打开数据库链接
lcDB = MySQLdb.connect("127.0.0.1", "root","","test" )
#使用cursor()方法获取操作游标
cursor = lcDB.cursor() #使用execute方法执行SQL语句
cursor.execute('select version()') #查询MYSQL版本 #使用fetchone()方法获取一条数据
data = cursor.fetchone() print("Database version : %s"%data) #使用 execute()方法执行SQL,如果表存在则删除
cursor.execute("DROP TABLE if exists employee") #使用预处理语句创建表
sql = """create table employee(
first_name char(20) not null,
last_name char(20),
age int,
sex char(1),
income float
)""" cursor.execute(sql) #关闭数据库链接
lcDB.close()

执行结果:

Database version : 8.0.11
数据库:

插入数据:

import  pymysql

#打开数据库链接
lcDB = pymysql.connect("127.0.0.1", "root", "", "test") #使用cursor()方法创建一个游标对象cursor
cursor = lcDB.cursor() #SQL 插入语句
#此处可将SQL换位update, delete等语句
sql = "insert into employee(first_name,\
last_name, age, sex, income)\
values ('%s', '%s', '%s','%s', '%s')"% \
('li', 'Mohan', 20, 'M', 1000) try:
# 使用execute()方法执行sql,
cursor.execute(sql)
#提交到数据库执行sql语句
   lcDB.commit() except:
  #发生错误时回滚
  lcDB.rollback() #关闭数据库
lcDB.close()

数据库查询操作

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

  • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
  • fetchall():接收全部的返回结果行.
  • rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
import  pymysql

#打开数据库链接
lcDB = pymysql.connect("127.0.0.1", "root", "", "test") #使用cursor()方法创建一个游标对象cursor
cursor = lcDB.cursor() #SQL 插入语句
#此处可将SQL换位update, delete等语句
sql = "select * from employee where income > %s"%(2000) try:
# 使用execute()方法执行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") #关闭数据库
lcDB.close()
SSH链接:

  -使用mysqldb模块通过ssh隧道连接mysql

import  pymysql
from sshtunnel import SSHTunnelForwarder server = SSHTunnelForwarder(
("132.223.3.23", 19), #ssh IP和port
ssh_password = "",#ssh 密码
ssh_username = "root",#ssh账号
remote_bind_address = ("1.1.1.1", 3306)) #数据库所在的IP和端口 #启动服务
server.start()
#打印本地端口,已检查是否配置正确
print(server.local_bind_host) goDB = pymysql.connect(host = "127.0.0.1", #固定写法
port = server.local_bind_port,
user = "root", #数据库账号
passwd = "",#数据库密码
db = "指定数据库名字")# 可以限定,只访问特定的数据库,否则需要在mysql的查询或者操作语句中,指定好表名 cur = goDB.cursor()
sql = "select no from gds order by rand() limit 10" #限制每次随机查询10条数据 try:
#执行SQL语句检查是否连接成功
cur.execute("select version()")
result = cur.fetchone()
print("Database version: %s" % result)
cur.execute(sql)
data = cur.fetchall() for row in data:
good_no = row[0]
print(good_no) except:
print("Error") #关闭连接
goDB.close()
server.close()

Python --链接MYSQL数据库与简单操作 含SSH链接的更多相关文章

  1. 在php中需要用到的mysql数据库的简单操作

    1.数据库连接 1.1用windows命令行链接数据库服务器 几个DOS命令 在DOS环境下命令后面没有分号,在MySQL环境下,命令后面有分号 进入盘符: 语法:盘符: 进入盘符下的某个文件夹 语法 ...

  2. Python 连接Mysql数据库执行语句操作

    学习Mysql模块的使用,模块命名的坑,解决SHA加密错误无法连接

  3. Java连接MySQL数据库及简单操作代码

    1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...

  4. python+mysql数据库的简单操作

    最近接了一个任务,测试某项类似于收益情况报表的功能,因计算公式复杂,单纯手算过于复杂,所以想到写成脚本 根据python的分治原则,先整了几个函数用于实现计算逻辑,后发现数据输入过于繁琐,所以决定使用 ...

  5. mysql数据库的简单操作

    首先进入mysql:mysql -u root -p 1.建库: create database 库名称; 例如:create database mydata;(创建一个名为“mydata”的库): ...

  6. Python学习笔记9-Python 链接MySql数据库

    Python 链接MySql数据库,方法很简单: 首先需要先 安装一个MySql链接插件:MySQL-python-1.2.3.win-amd64-py2.7.exe 下载地址:http://dev. ...

  7. python连接mysql数据库简单例子

    今天用pyhton2连接本地的mysql数据库,总的来说比较简单,但还是遇到一些小问题 代码如下: # -*- coding: utf-8 -*- import os import MySQLdb i ...

  8. 使用python读取mysql数据库并进行数据的操作

    (一)环境的配置 使用python调用mysql数据库要引进一些库. 目前我使用的python版本是python3.6.引进库为pymysql 其他对应的库可以有以下选择: mysqldb,oursq ...

  9. 进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用

    进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数 ...

随机推荐

  1. Tronado【第2篇】:tronado自定义Form组件

    Tronado自定义Form组件 一.获取类里面的静态属性以及动态属性的方法 方式一: # ===========方式一================ class Foo(object): user ...

  2. 基于element ui 实现七牛云自定义key上传文件,并监听更新上传进度

    借助上传Upload 上传组件的 http-request 覆盖默认的上传行为,可以自定义上传的实现 <el-upload multiple ref="sliderUpload&quo ...

  3. java面向对象3-继承(继承、抽象类、抽象接口)

    4.继承 面向对象概念-类与对象的关系 封装:指隐藏对象的属性和实现细节,仅对外提供公共访问方式,private-构造方法/构造器-this关键字-static关键字(javadoc制作工具类) -代 ...

  4. 《Head First 软件开发》阅读二

    项目计划:为成功而筹划 每段伟大的代码始于伟大的计划. 客户现在就要他们的软件,可是开发需要的时间远远超过客户要求时间.我们需要实际解决方法:由客户确定优先级,与客户一起确定优先级顺序,开发出Mile ...

  5. MySQL知识总结(缓存)

    1.缓存机制概念 缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql.如果表更改了,那么使用这个表的所有缓冲查询将不再有效,查 ...

  6. Spring 跨重定向请求传递数据

    在处理完POST请求后, 通常来讲一个最佳实践就是执行一下重定向.除了其他的一些因素外,这样做能够防止用户点击浏览器的刷新按钮或后退箭头时,客户端重新执行危险的POST请求. 在控制器方法返回的视图名 ...

  7. Linux基础教程 linux无密码ssh登录设置

      概述 在一些常用设备之间ssh, scp,不用输入密码可以节省不少时间. 生成密钥 先看本地是否有密钥,如果有,则不用生成,否则会影响到以前打通的设备. 复制代码代码如下: 没有则用 ssh-ke ...

  8. Charles模拟数据

    安装好Charles 桌面创建json文件

  9. C++ 值传递、指针传递、引用传递

    1.值传递 (1)形参是实参的拷贝(这句话说明形参和实参是两个实体),改变形参的值并不会影响外部实参的值. (2)从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传 ...

  10. Logger工具类

    org.slf4j.Logger的简单封装,传入所在类的class,和类名或全类名. public class LoggerFactory { public static Logger getLogg ...