像PHP一样的python语法来存储数据

时间:2014-07-10 11:15:55

标签: python html database sqlite

我使用sqlite3作为数据库,我有一个html表单,但我只想在输入按钮时发送数据,也就是说在我的HTML代码中放置SQL查询的位置?

请不要给我-1 ....答案比-1更明确

Html.py

html = '''

<html>
<head>
    <title>- Project -</title>
</head>
<body>

App: ${var1}<br/><br/>

Tix: ${var2}<br/><br/>

Fork: ${var3}<br/><br/>

<form name="sendData" method="get" action="http://localhost:8000/cgi/scriptGet.py">
    Hobbies: <input type="text" name="hob"><br/><br/>
    Qualities: <input type="text" name="mail"/><br/><br/>
    Defects: <input type="text" name="department"/><br/><br/>
    <input type="submit" value="OK"/>
</form>
</body>
</html> '''

scriptget.py

import cgi, cgitb, os, sys, socket, getpass, platform
import json
import sqlite3

config_file = open("cgi/config.txt", "r")
my_argv = json.load(config_file)

form = cgi.FieldStorage()

machine = cgi.escape(os.environ["REMOTE_ADDR"])

name = form.getvalue('name')
mail  = form.getvalue('mail')

print "Content-type:text/html\n\n"
print "<!DOCTYPE html>"
print "<html>"

print "App: :", my_argv[2]
print "<br/><br/>"

print "your name is :", name
print "<br/><br/>" 

print "your mail is :", mail
print "<br/><br/>"

print "</body>"
print "</html>"


conn = sqlite3.connect('database.sqlite')
conn.row_factory = sqlite3.Row 
c = conn.cursor()

sql = "INSERT INTO info_calc (my_argv[2], my_argv[3], my_argv[4], sys.platform, getpass.getuser(), machine ) VALUES (%s, %s, %s, %s, %s, %s)

try:
    c.execute(sql)
    conn.commit()
except:
     conn.rollback()

     cursor.close()

2 个答案:

答案 0 :(得分:0)

好吧,从您的代码中告诉您将表单(html.py)中的数据传输到 script.py 。在script.py中,您只需评估传输的数据并执行所需的SQL操作(如documentation中所述)。

因此,总而言之,您必须在服务器上的 script.py 中执行SQL操作,而不是在html.py中执行。后者是不可能的,因为html.py不会收到发送到 script.py 的数据。

编辑:好的,现在您已经详细介绍了html.py和scriptGet.py。首先,我建议您使用纯HTML文件而不是html.py,只要您正在开发。这可能是这样的:

<html>
<head>
    <title>- Project -</title>
</head>
<body>
<form name="sendData" method="get" action="http://localhost:8000/cgi/scriptGet.py">
    Name: <input type="text" name="name"><br/><br/>
    Mail: <input type="text" name="mail"/><br/><br/>
    Submit: <input type="submit" value="Ok"/>
</form>
</body>
</html>

其次,你必须把furas&#39;要在scriptGet.py中使用的代码(有关如何使用SQL的详细信息,请参阅documentation):

import cgi, cgitb, os, sys, socket, getpass, platform
import json
import sqlite3

config_file = open("cgi/config.txt", "r")
my_argv = json.load(config_file)

form = cgi.FieldStorage()

machine = cgi.escape(os.environ["REMOTE_ADDR"])

name = form.getvalue('name')
mail = form.getvalue('mail')

print "Content-type:text/html\n\n"
print "<!DOCTYPE html>"
print "<html>"

print "App: :", my_argv[2]
print "<br/><br/>"

print "your name is :", name
print "<br/><br/>" 

print "your mail is :", mail
print "<br/><br/>"

print "Adding data to SQL database<br/>"
conn = sqlite3.connect('example.db') # your database
c = conn.cursor()
c.execute( "INSERT .... ") #  your SQL query
conn.commit()
conn.close()

print "</body>"
print "</html>"

顺便说一句,如果你现在正在学习Python,你应该考虑使用Python 3.x而不是2.x(略有不同的语法)。从长远来看,这将获得回报。

答案 1 :(得分:0)

数据库示例:

import sqlite3

conn = sqlite3.connect('example.db') # your database

c = conn.cursor()

c.execute( "INSERT .... ") #  your SQL query

conn.commit()

conn.close()

在文档中查看更多内容:https://docs.python.org/2/library/sqlite3.html