S.U.Connectior
s-connector的Python项目详细描述
S U连接器
对于python代码,使用connector to db非常简单。
支持数据库引擎:mysql和redshift amazon
说明
它是在python中简单连接到db的包装器。
依赖关系
- python>;=3.7或更多(可能在python 2.x上工作,但我没有测试它)。
- PyYAML或更多(文件设置需要)
- psycopg2连接到redshift amazon db的模块
- mysqlclient连接mysql数据库的模块
- s\u记录器简单记录器模块的实现
安装前
在安装mysqlclient
之前,需要执行一些额外的步骤:
sudo apt-get install python3-dev default-libmysqlclient-dev
debian/ubuntusudo yum install python3-devel mysql-devel
红帽/centosbrew install mysql-connector-c
MacOS(自制)(目前,它有缺陷。见下文)
打开文件:/usr/local/Cellar/mysql-connector-c/x.x.x/bin/mysql-config
-而不是x.x.x
数量mysql-connector-c
版本
查找后续行
# on macOS, on or about line 112:
# Create options
libs="-L$pkglibdir"
libs="$libs -l "
更改为
# Create options
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
但是,在开始更改此文件之前,需要添加写入权限:
chmod 0666 /usr/local/Cellar/mysql-connector-c/x.x.x/bin/mysql-config
更改后需要恢复访问:
chmod 0555 /usr/local/Cellar/mysql-connector-c/x.x.x/bin/mysql-config
如何使用
文件main.py有一个小例子。
- 需要安装模块:pip安装S_连接器
- 创建'db_credential.yaml',其中包含带有连接凭据的文件的路径。见 格式below
- 使用连接凭据创建文件。请参见格式below文件名
credential.yaml
- 在您的代码中需要使用import fro importing模块
from s_connector.S_Connector import MySQLConnector
或/和
froms_connector.SConnectorimportRedshiftConnector
- 创建类s\u logger的对象并为其指定设置文件名
connector=RedshiftConnector('redshift_credential')# 'redshift_credential' - name of group for Redshift Amaon credential
或/和
connector=MySQLConnector('mysql_credential')# 'mysql_credential' - name og group for MySql credential
我们可以使用open方法建立连接,使用close方法关闭连接
connector.open()res=connector.select('SELECT 1;')print(res[0][0])connector.close()
或
使用上下文管理器:
withMySQLConnector('mysql_credential')asconnector:res=connector.select('SELECT 1;')print(res[0][0])
示例:
froms_connector.SConnectorimportMySQLConnectorfroms_connector.SConnectorimportRedshiftConnectorif__name__=='__main__':connector=RedshiftConnector('redshift_credential')connector.open()print(connector.select('SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;'))connector.close()withRedshiftConnector('redshift_credential')asconnector:print(connector.select('SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;'))connector=MySQLConnector('mysql_credential')connector.open()print(connector.select('SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;'))connector.close()withMySQLConnector('mysql_credential')asconnector:print(connector.select('SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;'))
格式化数据库凭证。yaml:
path_to_cred: credential.yaml
格式化凭证。yaml:
important此文件需要移动到受保护的位置。
redshift_credential: # connection name
host: redshift.data.db.test # or IP
port: 5432
database: test
user: user_db
passcode: somepwd
mysql_credential: # connection name
host: mysql.data.db.test # or IP
port: 3306
database: test_db
user: user_db
passcode: somepwd