Skip to main content

No project description provided

Project description

[toc]

项目背景

目前每次我们存数据库的时候都会有这样的问题,所有的数据在同步。或者说在入库时我们需要写入库的相关代码【day by day】,本着:DRY - Don't Repeat Yourself(不要重复你自己)原则于是我想到了我们可以异步及批量数据操作器。

项目构想

  • 我们只需要关注数据的问题,不用再太多费心操作相关的创建表,修改表相关字段问题

项目支持的数据库类型

  • MySQL
  • SqlServer
  • PostgreSQL
  • KafKa
  • ElasticSearch

实现的功能

  • 智能创建表和字段
  • 批量数据插入操作
  • 操作数据同一个表字段不同时,会到表中智能增加字段
  • 支持数据库的连接参数重写操作

配置文件

config.py文件中配置数据库和消息队列的连接信息。您需要设置如下环境变量:

  • ES_HOST_PORT_LIST: Elasticsearch的主机和端口列表。
  • KAFKA_HOST, KAFKA_PORT, KAFKA_TOPIC: Kafka的主机、端口和主题。
  • 数据库相关配置(如SQL Server、PostgreSQL、MySQL)。

文件说明

DBOP(Database Operation)数据库操作相关代码

  • x_sqlserver.py文件用来存储处理x_sqlserver数据的管道
  • x_mysql.py文件用来存储处理x_mysql数据的管道
  • x_kafka.py文件用来存储处理kafka数据的管道
  • x_mongo.py文件用来存储处理Mongo数据的管道

基本实例

# 导入mysql
from xdbx import x_mysql

# 导入sqlserver
# from xdbx import x_mssql

# 数据库ip
x_mysql.host = '127.0.0.1'
# 数据库端口 【mysql默认为3306】
x_mysql.port = 3306
# 数据库用户名
x_mysql.username = 'root'
# 数据库密码
x_mysql.password = '123456'
# 数据库名【需要先创建好的数据库】
x_mysql.db = 'test'
# 插入一条

x_mysql.insert_one(item={'a': 1, 'b': 2}, table='ceshi_20211229')
# 插入多条
x_mysql.insert_many(items=[{'a': 1, 'b': 2}, {'a': 1, 'b': 2}, {'a': 1, 'b': 2}, {'a': 1, 'b': 2}],
                    table='ceshi_20211229')

使用方法

Elasticsearch 交互

使用XES类与Elasticsearch进行交互。示例代码如下:

from xdbx import x_es

# 实例化并连接Elasticsearch
es = x_es.connect()

# 执行查询
query_json = '{"query": {"match_all": {}}}'
results = es.query(query_json)

# 将结果写入Excel
es.query(query_json, to_excel=True)

Kafka 交互

将Kafka进行了封装,对平时我们爬虫的一些常规数据存储做操作,利用单例模式开发支持多线程操作【加锁】 使用XKafka类与Kafka进行交互。示例代码如下:

from xdbx import x_kafka

# 实例化Kafka生产者
kafka_producer = x_kafka._connect()

# 发送消息
message = {'key': 'value'}
kafka_producer.insert(message)

SQL Server 交互

将SqlServer进行了封装,会自动智能的去创建一些表和字段相关的东西,会省爬虫开发者一些时间 使用SqlServerPipeline类与SQL Server进行交互。示例代码如下:

from xdbx import x_mssql

# 实例化SQL Server管道
sql_server = x_mssql()

# 插入数据
item = {'column1': 'value1', 'column2': 'value2'}
table = 'your_table_name'
sql_server.insert_one(item, table)

PostgreSQL 交互

将PostgreSQL进行了封装,会自动智能的去创建一些表和字段相关的东西,会省爬虫开发者一些时间。 使用PostgrePipeline类与PostgreSQL进行交互。示例代码如下:

from xdbx import x_pgsql

# 实例化PostgreSQL管道
postgres = x_pgsql()

# 执行SQL查询
sql = 'SELECT * FROM your_table'
results = postgres.find(sql)

MySQL 交互

将MySQL进行了封装,会自动智能的去创建一些表和字段相关的东西,会省爬虫开发者一些时间。因为mysql<=5.5版本可能有些创建更新时间不稳定的问题,我已经把相关的代码先暂时不开放,如果有更好的方案我们再优化一下。 使用MysqlDB类与MySQL进行交互。示例代码如下:

from xdbx import x_mysql

# 实例化MySQL数据库连接
mysql = x_mysql()

# 执行SQL查询
sql = 'SELECT * FROM your_table'
results = mysql.find(sql)

错误处理

在使用过程中,如果遇到连接错误或查询错误,请检查配置文件中的连接信息是否正确,并查看日志输出的错误详情。

联系我们

如果有任何问题或需要进一步的帮助,请联系我们。

Q&A

Q0:解决触发器的问题

注:相同数据库中不能有相同的触发器,虽然作用于这个表,但是他的范围是相对于数据库,相当于函数名

DBEDF650-1E0D-42ff-A3FC-D32E8FF93CD6.png

Q1:解决字段名大小写不同判断有误的问题

使用字段做对比时全进行转换成小写后再对比

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xdbx-1.1.1.tar.gz (15.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xdbx-1.1.1-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

Details for the file xdbx-1.1.1.tar.gz.

File metadata

  • Download URL: xdbx-1.1.1.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.8.16

File hashes

Hashes for xdbx-1.1.1.tar.gz
Algorithm Hash digest
SHA256 575220b773febfbf5e9113cbabeed3561b16980c5cd3e82b409a71b55e771a3a
MD5 a3fc12c8a2bab488dd090f427f48df64
BLAKE2b-256 9e714a0d8539a98f7560118d10a66837a2e0b9523d7b72d098af8998fe209ddf

See more details on using hashes here.

File details

Details for the file xdbx-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: xdbx-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 20.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.8.16

File hashes

Hashes for xdbx-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7def93fcd58e8eb2b5909a458c2939f34f43f6ccce31f2ce1b9bd32ad34e1bfd
MD5 5f9e13d717b6999a957a92827dd15bf5
BLAKE2b-256 7bb7694cdf93c0230a796bf735abf33a7445cb29bc31e10f3b6d8d6454f96c1d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page