前言:
今天咱们对“python怎么连接oracle数据库”可能比较珍视,咱们都想要知道一些“python怎么连接oracle数据库”的相关知识。那么小编在网上网罗了一些对于“python怎么连接oracle数据库””的相关内容,希望看官们能喜欢,姐妹们快快来了解一下吧!Mysql驱动介绍
MySQL-python(弃用):也就是MySQLdb,是对C语言操作MySQL数据库的一个简单封装。遵循了Python DB API v2。但是只支持Python2,目前还不支持Python3。
mysqlclient(安装难,但django官方默认):是MySQL-python的另外一个分支,支持Python3并且修复了一些bug。
pymysql:纯Python实现的一个驱动,因为是纯Python编写的,因此执行效率不如MySQL-python。并且也因为是纯Python编写的,因此可以和Python代码无缝衔接。
MySQL Connector/Python:MySQL官方推出的使用纯Python连接MySQL的驱动。因为是纯Python开发的,效率不高。
推荐参考
Python MySQL 数据库连接 (二) pymysql
Python MySQL 数据库连接 (三) mysqlclient django默认使用
安装
python -m pip install mysql-connector-python使用案例
#!/usr/bin/env python# -*- coding: utf-8 -*-# pip install mysql-connector-python # 8.0 # Oracle 官方支持# pip install mysql-connector # 2.1.6 # 不要安装这个, 分支, 已经停止更新import loggingimport mysql.connectorfrom mysql.connector import errorcodeclass DBQuery: """ 1 sqluser = DBQuery().ment("SELECT * FROM `user` ") # 直接使用 3 sqldb = DBQuery() # sql 初始化 fimes = sqldb.ment("SELECT * FROM tables WHERE username=%s AND id=%s", (usernmae, 1), close=False) # 不关当前链接 2 connectdata = {'host': '127.0.0.1'} sqldb= DBQuery(**connectdata) # sql 初始化 fimes = sqldb.ment("SELECT * FROM tables WHERE username=%s AND id=%s", (usernmae, 1)) # 自动关闭当前链接 4 """ def __init__(self, **kwargs): self.mysql_config = { 'user': 'user', 'password': 'password', 'host': '127.0.0.1', 'database': 'database', 'connect_timeout': 10, 'raise_on_warnings': True, 'use_pure' : True, # False(默认)使用 C 扩展接口, 否则不使用, 如果系统上没有C扩展,那么 use_pure就是True # 报错ImportError: MySQL Connector/Python C Extension not available } self.kwargs = kwargs self.replaceconfig() self.config = self.mysql_config.copy() self.dictionary = True # 返回类型 dict, 默认类型[()] self.conn = None self.cur = None def replaceconfig(self): """ 替换参数 """ for k, v in self.kwargs.items(): self.mysql_config[k] = v def connect(self): """ 数据库连接函数,建立连接和游标 """ if self.conn and self.cur: return True try: self.conn = mysql.connector.connect(**self.config) # except mysql.connector.NotSupportedError: # logging.error("不支持使用旧(不安全)密码进行身份验证。\n" # "有关更多信息,请在最新的MySQL手册中查找Password Hashing\n" # "在服务端尝试使用\n" # "SET old_passwords=0\n" # "SET PASSWORD FOR user=PASSWORD('password')\n" # "user链接的用户名, password链接的密码") # return False except mysql.connector.Error as err: if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: logging.error("用户名或者密码错误") elif err.errno == errorcode.ER_BAD_DB_ERROR: logging.error("数据库不存在") else: logging.error("数据库连接失败", err) return False self.cur = self.conn.cursor(dictionary=self.dictionary) return True def ment(self, statement, parameter=None, close=True): """ 数据执行语句函数 ,statement:语句,parameter:参数,必须是 元组 或者 列表,返回执行结果""" # print(statement,parameter) if not self.connect(): return False try: self.cur.execute(statement, parameter) if 'SELECT' == statement.strip().upper()[0:6] or 'SHOW' == statement.strip().upper()[0:4]: result = self.cur.fetchall() elif 'CREATE TABLE' == statement.strip().upper()[0:12]: result = True else: result = self.conn.commit() if statement.upper()[0:6] in ['INSERT', 'UPDATE']: result = self.rowcount() except mysql.connector.Error as e: if e.errno == errorcode.ER_DEPRECATED_UTF8_ALIAS: logging.warning("3719: 'utf8' is currently an alias for the character set UTF8MB3, " "but will be an alias for UTF8MB4 in a future release. " "Please consider using UTF8MB4 in order to be unambiguous.") result = True else: logging.error('SQL_ERROR: %s, statement:%s' % (e, statement)) self.conn.rollback() self.mclose(close) return False self.mclose(close) return result def lastd(self): """ 返回 INSERT 语句的id, 应该在插入后立即使用 """ try: return self.cur.lastrowid except: pass def rowcount(self): """ 返回 INSERT or UPDATE 语句的更新数目 """ try: return self.cur.rowcount except: pass def mclose(self, close=True): if close: self.dbclose() def dbclose(self): try: if self.cur: self.cur.close() if self.conn: self.conn.close() return True except: passDjango 使用
django 官网说明
setting.py
mysql 官网说明
DATABASES = { 'default': { 'NAME': 'user_data', 'ENGINE': 'mysql.connector.django', 'USER': 'mysql_user', 'PASSWORD': 'password', 'OPTIONS': { 'autocommit': True, }, }}错误补充创建表时 mysql utf-8 错误, 版本 mysql 8
请使用 utf8mb4
解决方案 其他资料
推荐参考
Python MySQL 数据库连接 (二) pymysql
Python MySQL 数据库连接 (三) mysqlclient django默认使用
标签: #python怎么连接oracle数据库