小编Ple*_*eea的帖子

(Django)气流中的ORM - 有可能吗?

如何在Airflow任务中使用Django模型?

根据官方的Airflow文档,Airflow提供了与数据库(如MySqlHook/PostgresHook/etc)交互的钩子,这些钩子稍后可以在运算符中用于行查询执行.附加核心代码片段:

https://airflow.apache.org/_modules/mysql_hook.html复制

class MySqlHook(DbApiHook):
    conn_name_attr = 'mysql_conn_id'
    default_conn_name = 'mysql_default'
    supports_autocommit = True

    def get_conn(self):
        """
        Returns a mysql connection object
        """
        conn = self.get_connection(self.mysql_conn_id)
        conn_config = {
            "user": conn.login,
            "passwd": conn.password or ''
        }
        conn_config["host"] = conn.host or 'localhost'
        conn_config["db"] = conn.schema or ''
        conn = MySQLdb.connect(**conn_config)
        return conn
Run Code Online (Sandbox Code Playgroud)

https://airflow.apache.org/_modules/mysql_operator.html复制

class MySqlOperator(BaseOperator):
    @apply_defaults
    def __init__(
            self, sql, mysql_conn_id='mysql_default', parameters=None,
            autocommit=False, *args, **kwargs):
        super(MySqlOperator, self).__init__(*args, **kwargs)
        self.mysql_conn_id = mysql_conn_id
        self.sql = sql
        self.autocommit = autocommit …
Run Code Online (Sandbox Code Playgroud)

django orm django-models airflow apache-airflow

10
推荐指数
1
解决办法
2239
查看次数

Pandas 将数字转换为字符串 - 意外结果

似乎没有办法将输入表(从 html/xls/etc 文件)获取到 DataFrame 对象,因为它是 1 对 1 的,而没有 Pandas 内部应用的任何字段转换。

假设以下 html 表以 .xls 文件的扩展名保存,我们如何使用 DataFrame 对象在 Python 内存中获得该表的相同表示?

“test_file.xls”的内容:

<body>
    <table>
        <thead>
            <tr>
                <th class="tabHead" x:autofilter="all">Number</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td class="tDetail">1.320,00</td>
            </tr>
            <tr>
                <td class="tDetail">600,00</td>
            </tr>
        </tbody>
    </table>
</body>
Run Code Online (Sandbox Code Playgroud)

(1)直接读取文件

处理代码:

import pandas

df = pandas.read_html('test_file.xls')
print(df[0])
print(df[0].dtypes)
Run Code Online (Sandbox Code Playgroud)

输出:

     Number
0      1.32
1  60000.00

Number    float64
dtype: object
Run Code Online (Sandbox Code Playgroud)

正如我们所看到的,这些数字是通过一些预定义的逻辑转换为 float64 的。我认为这个逻辑包括语言环境设置,也许熊猫内部的一些规则等。直接指定字符串转换器不允许获取初始值。

(2) 应用str函数作为每个维度的转换器

处理代码:

converters = {column_name: str for column_name in df[0].dtypes.index}
df = pandas.read_html(f, converters = …
Run Code Online (Sandbox Code Playgroud)

python file-conversion dataframe pandas

7
推荐指数
1
解决办法
1078
查看次数