我用python,运动传感器和覆盆子pi构建了一组音乐楼梯,并使用一个网络应用程序供您选择要发出哪种乐器声音。 仪器的类型存储在一个MySQL数据库中,该数据库已连接到python代码(在光束破裂时发出声音)和一个Web应用程序,该应用程序允许用户从数据库中选择仪器类型。
我只是想知道是否有一种方法可以从python代码中查询数据库,这意味着仅当从数据库中选择一行时,才运行特定的代码块。
例如,有人在Web应用程序上单击“鼓”。 从MySQL数据库中选择instrumentType“ Drum”,Drumsound.play()应在python代码上运行。
有什么办法可以在python上执行此操作吗?
这适用于运行python 2.7,mySQLdb5和apache2的树莓派3。
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="*****",
pw="*****",
db="stairs"
)
cursor = mydb.cursor()
cursor.execute("SELECT variableValue FROM stairs WHERE variableValue =
'instrumentType'")
import RPi.GPIO as GPIO # GPIO
import pygame.mixer # To make sound
pygame.mixer.init()
''' GPIO setup '''
GPIO.setmode(GPIO.BCM) # GPIO setmode
GPIO.setwarnings(False)
'''Define steps and pins here'''
step1 = 4
'''Motion sensor setup here'''
GPIO.setup(step1, GPIO.IN, GPIO.PUD_UP)
'''Piano files here'''
C1 = pygame.mixer.Sound("piano/C1.wav")
'''Drum files here'''
drum1 = pygame.mixer.Sound("drum/C1.wav")
def play(pin):
sound = sound_pins[pin]
print("Playing note from pin %s" % pin)
sound.play()
'''Dictionary of steps and sounds'''
sound_pins = {
step1: C1,
step2: D,
step3: E,
step4: F,
step5: G,
step6: A,
step7: B,
step8: C2,
}
for pin in sound_pins:
GPIO.setup(pin, GPIO.IN, GPIO.PUD_UP)
GPIO.add_event_detect(pin, GPIO.RISING, play, 100)