Python - 在MySQL数据库发生变化后向Android应用程序发送通知

时间:2018-04-14 16:56:20

标签: android python mysql firebase push-notification

我正在研究 pythonanywhere.com 上的项目,我的Python代码(使用Flask框架)管理想要访问MySQL数据库的Android应用程序的请求。

重点是,当一行添加到数据库表格时,我想要通知Android智能手机。

如果我理解正确,从Python到Android,我可以使用Firebase云消息传递,但我不确定从MySQL到Python的用途:调用将发送通知的脚本的触发器?还是Python听数据库?还有什么?

请记住,我没有使用个人服务器和数据库,而是使用上述域名提供的服务器和数据库,因此我不确定我是否可以使用我想要的所有内容(例如,如果我没有弄错的话) ,不可能恳求UDF)。

提前致谢!

2 个答案:

答案 0 :(得分:5)

如果您使用SQLAlchemy,最好的方法是事件。所以你可以这样做:

class Post(db.Model):
     id = db.Column('id', db.Integer, primary_key=True)
     title = db.Column(db.String)
     text = db.Column(db.String)

@db.event.listens_for(Post, "after_insert")
def send_notification(mapper, connection, target):
     push_firebase_notification()

详细了解SQLAlchemy from blinker import Namespace awesome_signals = Namespace() model_saved = awesome_signals.signal('model-saved') class Post(object): ... def save(self): model_saved.send(self)

的事件详情

另一种方法是在Beq提到的模型中使用你的信号。

`<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="com.example.cognoscenti.interact">

<!-- To auto-complete the email text field in the login form with the user's emails -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.INTERNET" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".LoginActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".RegisterActivity" />
    <activity
        android:name=".ProfileActivity"
        android:label="@string/title_activity_profile"
        android:parentActivityName=".LoginActivity"
        android:theme="@style/AppTheme.NoActionBar">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.cognoscenti.interact.LoginActivity" />
    </activity>

    <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="Replace_Me"
        tools:replace="android:value"/>

    <provider
        android:name="com.facebook.FacebookContentProvider"
        android:authorities="com.facebook.app.FacebookContentProvider1620914054661826"
        android:exported="true" />

    <activity android:name=".AuthenticationActivity"></activity>
</application>

答案 1 :(得分:1)

从哪里添加行?如果来自Flask应用程序,您可以使用模型中的信号在添加新行时发​​送通知