Python3连接各类数据库(Mysql、Mssql、Oracle)⼀、Mysql
1. 安装 PyMysql 库
cmake 安装pip3 install pymysql
2. 连接数据库的⼏种⽅法
connect()⽅法⽤于连接数据库
第⼀种:将各类字段写上
db = t(host="localhost", port=3306, user="root", passwd="root", db="Geek_Web", charset="utf8mb4")
第⼆种:省略字段
db = t(root,root, Geek_Web)
第三种:构建配置⽂件
config = {
'host':'localhost',
'port':3306,
'user':'root',
'passwd':'root',
'db':'Geek_Web',
'charset':'utf8mb4',
}
db = t(**config)
3. 操作数据库
cursor = db.cursor() # cursor() ⽅法获取操作游标
sql = "SELECT * FROM main"
results = cursor.fetchall() # 获取所有记录列表
results = cursor.fetchone() # 获取⼀条记录列表
dbmit() # 没有设置默认⾃动提交,需要主动提交,以保存所执⾏的语句
# 除了查询其他操作都需要保存执⾏
cursor.close()
db.close() # 关闭数据库连接
4. PyMysql 返回字典数据
PyMysql 默认返回是元组,有时候需要返回数据库的字段,需要把 Key 也返回及返回字典类型
# 在连接数据库时候加上 cursorclass 就可以数据库内容以字典格式返回
cursorclass=pymysql.cursors.DictCursor
5. 源码实例
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
# 安装PyMySQL
# sudo pip install PyMySQL
import pymysql
config = {
'host':'localhost',
'port':3306,
'user':'root',
'passwd':'root',
'db':'Geek_Web',
'charset':'utf8mb4',
# 数据库内容以字典格式输出
#'cursorclass':pymysql.cursors.DictCursor,
}
# 连接数据库
def Mysql():
# 连接数据库
#db = t(host="localhost", port=3306, user="root", passwd="root", db="Geek_Web", charset="utf8mb4")
db = t(**config)
#cursor()⽅法获取操作游标
cursor = db.cursor()
try:
return (db, cursor)
except:
print("数据库访问失败")
# 增
def Insert(db, cursor):
sql = "insert into main(id, Tag, Name, Version, Introduce, Class, Worked_OS, Course_URL, Download_URL, Image_URL, Remarks_1, Remarks_2) \ values (NULL, '软件编号', '软件名称', '软件版本', '软件简介', '软件类别', '运⾏环境', '教程地址', '下载地址', '图标地址', '备注1', '备注2')"
# 执⾏SQL语句
# 没有设置默认⾃动提交,需要主动提交,以保存所执⾏的语句
dbmit()
# 删
def Delect(db, cursor):
sql = "DELETE FROM main WHERE Name = '修改后的名字'"
dbmit()
# 查
def Select(db, cursor):
sql = "SELECT * FROM main"
# 获取所有记录列表
编程入门课程教程results = cursor.fetchall()
return results
# 改
def Update(db, cursor):
商城源码sql = "UPDATE main SET Name = '修改后的名字' WHERE Remarks_2 = '备注2'"
dbmit()
# 关闭数据库连接
def Close(db, cursor):
cursor.close()
db.close()
(db, cursor) = Mysql()
print("\n-------------数据库初始状态-------------")
print(Select(db, cursor))
Insert(db, cursor)
print("\n-------------数据库插⼊数据-------------")
print(Select(db, cursor))
Update(db, cursor)
print("\n-------------数据库修改数据-------------")
print(Select(db, cursor))
Delect(db, cursor)
print("\n-------------数据库删除数据-------------")
mysql语句转oracleprint(Select(db, cursor))
Close(db, cursor)
6. PyMysql 参数
connect() 参数
host 连接的数据库服务器主机名 默认为本地主机(localhost)
user 连接数据库的⽤户名 默认为当前⽤户
passwd 连接密码 没有默认值
db 连接的数据库名 没有默认值
conv 将⽂字映射到Python类型的字典默认为versions
cursorclass cursor()使⽤的种类 默认值为MySQLdb.cursors.Cursor
compress 启⽤协议压缩功能
named_pipe 在windows中 与⼀个命名管道相连接
init_command ⼀旦连接建⽴ 就为数据库服务器指定⼀条语句来运⾏
readdefaultfile 使⽤指定的MySQL配置⽂件
readdefaultgroup 读取的默认组
unix_socket 在unix中 连接使⽤的套接字 默认使⽤TCP
port 指定数据库服务器的连接端⼝ 默认是3306
连接对象⽅法
连接对象的 db.close() ⽅法可关闭数据库连接 并释放相关资源
连接对象的 db.cursor([cursorClass]) ⽅法返回⼀个指针对象 ⽤于访问和操作数据库中的数据
连接对象的 db.begin() ⽅法⽤于开始⼀个事务 如果数据库的AUTOCOMMIT已经开启就关闭它 直到事务调⽤commit()和rollback()结束
连接对象的 dbmit() 和db.rollback()⽅法分别表⽰事务提交和回退
指针对象⽅法
指针对象的 cursor.close() ⽅法关闭指针并释放相关资源
指针对象的 ute(query[,parameters]) ⽅法执⾏数据库查询tops
指针对象的 cursor.fetchall() 可取出指针结果集中的所有⾏ 返回的结果集⼀个元组(tuples)
指针对象的 cursor.fetchmany([size=cursor.arraysize])从查询结果集中取出多⾏ 我们可利⽤可选的参数指定取出的⾏数
指针对象的 cursor.fetchone() 从查询结果集中返回下⼀⾏
指针对象的 cursor.arraysize 属性指定由cursor.fetchmany()⽅法返回⾏的数⽬ 影响fetchall()的性能 默认值为1 指针对象的 wcount 属性指出上次查询或更新所发⽣⾏数-1表⽰还没开始查询或没有查询到数据
⼆、Mssql
1. 安装 PyMssql 库
pip3 install pymysql
2. 连接数据库的⽅法
Mssql ⽤字典配置不可以⽤,connect() ⽤来连接数据库
db = t(host="192.0.0.200",user="ymyg",password="ymyg",database="Geek_Web")
3. 操作数据库
和 Mysql 操作⽅法⼀模⼀样,只不过将 PyMysql 改为 PyMssql 即可,参考上⾯ PyMssql
4. PyMssql 返回字典数据
excel没有直方图选项只需要在连接数据库时候加上⼀个 as_dict 字段,将值改为 True 即可
db = t(host="192.0.0.200",user="ymyg",password="ymyg",database="Geek_Web",as_dict=True)
5. PyMssql 参数
connect() 参数
dsn 连接字符串 主要⽤于与之前版本的pymssql兼容
user ⽤户名
password 密码
trusted 布尔值 指定是否使⽤windows⾝份认证登陆
host 主机名
database 数据库
timeout 查询超时
login_timeout 登陆超时
charset 数据库的字符集
as_dict 布尔值 指定返回值是字典还是元组
max_conn 最⼤连接数
操作⽅法
close() 关闭游标
execute(operation) 执⾏操作
execute(operation params) 执⾏操作 可以提供参数进⾏相应操作
executemany(operation paramsseq) 执⾏操作 Paramsseq 为元组
fetchone() 在结果中读取下⼀⾏
fetchmany(size=None) 在结果中读取指定数⽬的⾏
fetchall() 读取所有⾏
nextset() 游标跳转到下⼀个数据集
其他⽅法
autocommit(status) 布尔值 指⽰是否⾃动提交事务 默认的状态是关闭的 如果打开 你必须调⽤commit()⽅法来提交事务close() 关闭连接
cursor() 返回游标对象 ⽤于查询和返回数据
commit() 提交事务
rollback() 回滚事务
pymssqlCursor类 ⽤于从数据库查询和返回数据
rowcount 返回最后操作影响的⾏数
connection 返回创建游标的连接对象
lastrowid 返回插⼊的最后⼀⾏
rownumber 返回当前数据集中的游标(通过索引)
6. PyMssql 配置⽂件
在开源库⽬录下到 f 打开
# $Id: f,v 1.12 2007/12/25 06:02:36 jklowden Exp $
#
# This file is installed by FreeTDS if no file by the same
# name is found in the installation directory.
#
# For information about the layout of this file and its settings,
# see f manpage "f".
# Global settings are overridden by those in a database
# server specific section
[global]
# TDS protocol version
;tds version = 4.2
# Whether to write a TDSDUMP file for diagnostic purposes
# (setting this to /tmp is insecure on a multi-user system)
;dump file = /tmp/freetds.log
;debug flags = 0xffff
# Command and connection timeouts
;timeout = 10
;connect timeout = 10
# If you get out-of-memory errors, it may mean that your client
# is trying to allocate a huge buffer for a TEXT field.
# Try setting 'text size' to a more reasonable limit
text size = 64512
# A typical Sybase server#newadd
[test_db]
host = 127.0.0.1
port = 1433
tds version = 8.0
client charset = GBK
⼀、Oracle
1. 安装 cx_Oracle 库
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论