python连接数据库系列
1.Python连接MySQL
具体详情参考:MySQL笔记
Python连接MySQL需要借助pymysql,安装pymysql
pip install pymysql
1.1 pymysql连接数据库
"""
支持python代码操作数据库MySQL
"""
pip3 install pymysql
import pymysql
conn = pymysql.connect(
host = '127.0.0.1',
port = 3306
user = 'root',
password = '123456', # 还可以简写passwd = '123456'
database = 'db666', # 还可以简写db = 'db666'
charset = 'utf8' # 千万不要加横杆
)
# cursor = conn.cursor() # 括号内不加参数的话 那么查询出来的数据是元组的形式 数据不够明确 容易混乱
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 字典形式返回数据 数据有具体的描述信息 更加的合理方便
sql = 'select * from user'
affect_rows = cursor.execute(sql) # 返回值是当前sql语句执行的受影响的行数
cursor.fetchone() # 只能结果的一条 数据本身
cursor.fetchall() # 拿所有 列表套多个数据
cursor.fetchmany(n) # 指定获取几条
"""
上述三个方法在读取数据的时候有一个类似于文件指针的特点
"""
cursor.scroll(1,'relative') # 相对于光标所在的当前位置往后移动
cursor.scroll(1,'absolute') # 相对于数据开头往后移动
1.2 pymysql补充
# 1.针对增删改 pymysql需要二次确认才能真正的操作数据
import pymysql
conn = pymysql.connect(
host = '127.0.0.1',
port = 3306,
user = 'root',
passwd = '123456',
db = 'db1',
charset = 'utf8',
autocommit = True
)
cursor = conn.cursor(pymysql.cursors.DictCursor)
# 增
sql = 'insert into user(name,password) values(%s,%s)'
# rows = cursor.execute(sql,('jackson',123))
rows = cursor.executemany(sql,[('xxx',123),('ooo',123),('yyy',123)])
print(rows)
# conn.commit() # 确认
# 修改
# sql = 'update user set name="jasonNB" where id=1'
# rows = cursor.execute(sql)
# print(rows)
# conn.commit() # 确认
# 删除
sql = 'delete from user where id=7'
rows = cursor.execute(sql)
print(rows)
conn.commit() # 确认
# 查
# sql = 'select * from user'
# cursor.execute(sql)
# print(cursor.fetchall())
"""
增删改查中
删改增它们的操作设计到数据的修改
需要二次确认
"""
# 还可以一次性插入N多条数据
rows = cursor.executemany(sql,[('xxx',123),('ooo',123)])
1.3 sql注入问题
"""
利用一些语法的特性 书写一些特点的语句实现固定的语法
MySQL利用的是MySQL的注释语法
select * from user where name='jason' -- jhsadklsajdkla' and password=''
select * from user where name='xxx' or 1=1 -- sakjdkljakldjasl' and password=''
"""
日常生活中很多软件在注册的时候都不能含有特殊符号
因为怕你构造出特定的语句入侵数据库 不安全
# 敏感的数据不要自己做拼接 交给execute帮你拼接即可
# 结合数据库完成一个用户的登录功能?
import pymysql
conn = pymysql.connect(
host = '127.0.0.1',
port = 3306,
user = 'root',
password = '123456',
database = 'db1',
charset = 'utf8' # 编码千万不要加-
) # 链接数据库
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
username = input('>>>:')
password = input('>>>:')
sql = "select * from user where name=%s and password=%s"
# 不要手动拼接数据 先用%s占位 之后将需要拼接的数据直接交给execute方法即可
print(sql)
rows = cursor.execute(sql,(username,password)) # 自动识别sql里面的%s用后面元组里面的数据替换
if rows:
print('登录成功')
print(cursor.fetchall())
else:
print('用户名密码错误')
2.Python连接Redis
具体使用详情参考:Redis的使用
2.1 Python操作Redis之普通连接
# 1 pip3 install redis
# 简单使用
from redis import Redis
# conn=Redis()
#连接对象
conn=Redis(host='127.0.0.1', port=6379)
ret=conn.get('name')
print(ret)
2.2 Python操作Redis之连接池
###### t_redis_pool.py
#redis连接池
import redis
# pool必须是单例的
POOL = redis.ConnectionPool(host='127.0.0.1', port=6379,max_connections=100) # 造一个池子,最多能放100个连接 ####### t_redis_conn.py
#redis连接池
# import redis
# pool必须是单例的 所以利用模块导入(单例)
# pool = redis.ConnectionPool(host='127.0.0.1', port=6379,max_connections=100) # 造一个池子,最多能放100个连接
import redis
# 包内的py文件,如果想右键运行,导包的时候不能带点
from t_redis_pool import POOL # pycharm提示的错
r = redis.Redis(connection_pool=POOL) # 只要执行这一句话,就是从池中拿出一个连接
ret=r.get('name')
print(ret)
3.pymongo操作MongoDB
具体详情参考:MongoDB
import pymongo # 导入模块
# 1.建立连接
collection.insert_one({'name':''})
sudo ufw allow 27017 更新
-----------------------------------------------------------
import pymongo
# 建立连接
client = pymongo.MongoClient('127.0.0.1',27017) # 可以省略
# 指定数据库
db = client['python3']
# 指定集合
my_col = db['student']
# 数据操作 (怎删改查)
# 增
# my_col.insert({'name':'parker1','age':16})
# 增多个
my_col.insert_many([{'name':'parker1','age':13},{'name':'parker2','age':14},{'name':'parker3','age':16}])
# 查
# res = my_col.find_one()
# print(res)
# res = my_col.find()
# print(res)
# for i in res:
# print(i)
# 改
# my_col.update_one({'name':'parker1'},{'$set':{'age':100}})
# 查看
# res = my_col.find_one({'name':'parker1'})
# print(res)
# 删 删除一个
res = my_col.delete_one({'name':'parker3'})
print(res)
import pymongo
client = pymongo.MongoClient('127.0.0.1',27017)
db = client['mydb']
collection = db['stu']
collection.insert_one({'name':'aa','age':18})
collection.insert_many([
{'name':'bb','age':19},
{'name':'cc','age':20},
])
for i in collection.find():
print(i)
print(collection.find_one({'name':'bb'}))
4.Python连接Microsoft SQL_Server
41.pymssql
class Sqls:
def __init__(self, host, user, password, database):
self.conn = pymssql.connect(host=host, user=user, password=password, database=database,as_dict=True, charset='cp936')
self.cursor = self.conn.cursor() def execute(self,sql):
self.cursor.execute(sql)
return self.cursor.fetchall() class sqlsToMysql:
def main(self):
host = "host"
user = "user"
password = "password"
database = "database"
sqls = Sqls(host,user,password,database)
r = sqls.execute("select * from a")
for i in r:
print(i)
print(r) if __name__ == '__main__':
sqlsToMysql().main()
示例1
import pymssql conn = pymssql.connect(host="xxx.aus.amer.xx.com",
database='TestEnv',
user='Test1',
password='Test1',
as_dict=True,
timeout=30, charset=r"utf8"
)
cursor = conn.cursor()
sql = """SELECT [CASE_NBR]
FROM [CaseClosure_TestEnv].[dbo].[CC_AAS_Record]
"""
res = cursor.execute(sql)
print(cursor.fetchall())
python连接数据库系列的更多相关文章
- Python学习系列(七)( 数据库编程)
Python学习系列(七)( 数据库编程) Python学习系列(六)(模块) 一,MySQL-Python插件 Python里操作MySQL数据库,需要Python下安装访 ...
- (原创)Python字符串系列(1)——str对象
在本博客 <Python字符串系列> 中,将介绍以下内容: Python内置的str对象及操作 字符串的格式化 Python中的正则表达式 re模块 本文将介绍Python内置的 str ...
- python连接数据库问题小结
在使用python连接数据库的时候遇到了这个问题: 大概意思就是在django的setting.py中配置的用户名和密码报错. 主要就是修改setting.py的配置 其中在里边的name和user项 ...
- python基础系列教程——Python中的编码问题,中文乱码问题
python基础系列教程——Python中的编码问题,中文乱码问题 如果不声明编码,则中文会报错,即使是注释也会报错. # -*- coding: UTF-8 -*- 或者 #coding=utf-8 ...
- python基础系列教程——Python3.x标准模块库目录
python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...
- python基础系列教程——Python库的安装与卸载
python基础系列教程——Python库的安装与卸载 2.1 Python库的安装 window下python2.python3安装包的方法 2.1.1在线安装 安装好python.设置好环境变量后 ...
- python基础系列教程——Python的安装与测试:python的IDE工具PyDev和pycharm,anaconda
---恢复内容开始--- python基础系列教程——Python的安装与测试:python的IDE工具PyDev和pycharm,anaconda 从头开启python的开发环境搭建.安装比较简单, ...
- 人脸检测及识别python实现系列(2)——识别出人脸
人脸检测及识别python实现系列(2)——识别出人脸 http://www.cnblogs.com/neo-T/p/6430583.html
- 人脸检测及识别python实现系列(6)——终篇:从实时视频流识别出“我”
人脸检测及识别python实现系列(6)——终篇:从实时视频流识别出“我” 终于到了最后一步,激动时刻就要来临了,先平复一下心情,把剩下的代码加上,首先是为Model类增加一个预测函数: #识别人脸 ...
- 人脸检测及识别python实现系列(5)——利用keras库训练人脸识别模型
人脸检测及识别python实现系列(5)——利用keras库训练人脸识别模型 经过前面稍显罗嗦的准备工作,现在,我们终于可以尝试训练我们自己的卷积神经网络模型了.CNN擅长图像处理,keras库的te ...
随机推荐
- 分享一个自己在用的.net 中mysql事务控制类(支持多条sql,参数化,自定义判断条件,错误点返回等)
1)首先看下事务控制器. using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using Sys ...
- [OpenCV实战]16 使用OpenCV实现多目标跟踪
目录 1 背景介绍 2 基于MultiTracker的多目标跟踪 2.1 创建单个对象跟踪器 2.2 读取视频的第一帧 2.3 在第一帧中确定我们跟踪的对象 2.4 初始化MultiTrackerer ...
- js 禁用刷新快捷键
// 上代码 /** * 按键监听 * Ctrl-17,F5-116,R-82 */ var oldKeyCode = -1; document.onkeydown = function (e) { ...
- Vue+echart 展示后端获取的数据
最近在合作做一个前后端分离项目时,为了测试我写的后端部分获取数据的效果,自己也学了一下 vue 的知识,在获取 json 信息这里也踩了很多坑. 这里列举下我返回的 json 部分信息: { &quo ...
- MySQL 索引的创建、删除
MySQL中索引的创建有三种方法,索引的删除有两种方法. 一.创建索引 (1)使用create index # 1.创建普通索引 create index 索引名 on 表名 (列名[(限制索引长度) ...
- while2.c程序
/*while2.c程序->注意分號的位置*/ 1 #include<stdio.h> 2 int main(void) 3 { 4 int n=0; 5 6 while(n++&l ...
- Coolify系列-手把手教学解决局域网局域网中的其他主机访问虚拟机以及docker服务
背景 我在windows电脑安装了一个VM,使用VM开启了Linux服务器,运行docker,下载服务镜像,然后运行服务,然后遇到了主机无法访问服务的问题. 问题排查 STEP1:首先要开启防火墙端口 ...
- webSocket前端+nodejs后端简单案例多人在线聊天
一:下面是一个简单的案例,回车发送消息,多人在线聊天 1.前端代码 <!DOCTYPE html> <html> <head> <meta charset=& ...
- 动力节点——day08
什么是集合,有什么用? 数组其实就是一个集合,集合实际上就是一个容器,可以用来容纳其他数据类型 集合为什么说在开发中使用最多? 集合是一个容器,是一个载体,可以一次容纳多个对象,在实际开发中,假设连接 ...
- effective-c 条款2理解与思考
尽量使用const,enum,inline替换 #define 因为,#define 替换发生在预处理阶段,编译器对这个替换内容就缺少了类型检测,并且不利于错误信息的查看 编译器再声明数组时必须知道数 ...