我正在研究 pythonanywhere.com 上的项目,我的Python代码(使用Flask框架)管理想要访问MySQL数据库的Android应用程序的请求。
重点是,当一行添加到数据库表格时,我想要通知Android智能手机。
如果我理解正确,从Python到Android,我可以使用Firebase云消息传递,但我不确定从MySQL到Python的用途:调用将发送通知的脚本的触发器?还是Python听数据库?还有什么?
请记住,我没有使用个人服务器和数据库,而是使用上述域名提供的服务器和数据库,因此我不确定我是否可以使用我想要的所有内容(例如,如果我没有弄错的话) ,不可能恳求UDF)。
提前致谢!
答案 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应用程序,您可以使用模型中的信号在添加新行时发送通知