将表单字段插入数据库(Bottle、sqlite)
Insert form fields into database (Bottle, sqlite)
必须有更好的方法来做到这一点..我已经阅读了瓶子的文档,但它并没有多大帮助。这有效,但它很脏。好像我错过了什么。
@route('/client/new', method="POST")
def add_new_client():
c = db.cursor()
query = """INSERT INTO Clients VALUES(NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"""
try:
r = request.POST
d = r['LastContact'].split('/') # mm/dd/yyyy
try: lastcontact = datetime(int(d[2]), int(d[0]), int(d[1]))
except Exception as e: lastcontact = datetime.now()
try: taxExempt = r['TaxExempt']
except Exception as e: taxExempt = 0
c.execute(query, (r['FirstName'], r['LastName'], r['Address1'], r['Address2'], r['City'], r['State'], r['Zip'],
r['HomePhone'], r['CellPhone'], r['WorkPhone'], r['Email'], r['ContactMethod'], r['ContactTime'],
r['ContactFrequency'], lastcontact, taxExempt, r['TaxID'], r['Notes']))
db.commit()
except Exception as e:
print "ERROR %s" % e
redirect('/client/%d' % c.lastrowid)
c.close()
如果你使用 SQLAlchemy
ORM,事情看起来会更干净,相关文章:
如果您希望混合使用 SQL 和 Python,您可以使用 named/keyword 查询占位符 来简化代码允许您将 r
字典传递到查询中:
d = r['LastContact'].split('/') # mm/dd/yyyy
try:
r['LastContact'] = datetime(int(d[2]), int(d[0]), int(d[1]))
except Exception as e:
r['LastContact'] = datetime.now()
if 'TaxExempt' not in r:
r['TaxExempt'] = 0
query = """
INSERT INTO
Clients
VALUES
(NULL,
:FirstName,
:LastName,
:Address1,
:Address2,
:City,
:State,
:Zip,
:HomePhone,
:CellPhone,
:WorkPhone,
:Email,
:ContactMethod,
:ContactFrequency,
:ContactTime,
:LastContact,
:TaxExempt,
:TaxID,
:Notes)
"""
c.execute(query, r)
必须有更好的方法来做到这一点..我已经阅读了瓶子的文档,但它并没有多大帮助。这有效,但它很脏。好像我错过了什么。
@route('/client/new', method="POST")
def add_new_client():
c = db.cursor()
query = """INSERT INTO Clients VALUES(NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"""
try:
r = request.POST
d = r['LastContact'].split('/') # mm/dd/yyyy
try: lastcontact = datetime(int(d[2]), int(d[0]), int(d[1]))
except Exception as e: lastcontact = datetime.now()
try: taxExempt = r['TaxExempt']
except Exception as e: taxExempt = 0
c.execute(query, (r['FirstName'], r['LastName'], r['Address1'], r['Address2'], r['City'], r['State'], r['Zip'],
r['HomePhone'], r['CellPhone'], r['WorkPhone'], r['Email'], r['ContactMethod'], r['ContactTime'],
r['ContactFrequency'], lastcontact, taxExempt, r['TaxID'], r['Notes']))
db.commit()
except Exception as e:
print "ERROR %s" % e
redirect('/client/%d' % c.lastrowid)
c.close()
如果你使用 SQLAlchemy
ORM,事情看起来会更干净,相关文章:
如果您希望混合使用 SQL 和 Python,您可以使用 named/keyword 查询占位符 来简化代码允许您将 r
字典传递到查询中:
d = r['LastContact'].split('/') # mm/dd/yyyy
try:
r['LastContact'] = datetime(int(d[2]), int(d[0]), int(d[1]))
except Exception as e:
r['LastContact'] = datetime.now()
if 'TaxExempt' not in r:
r['TaxExempt'] = 0
query = """
INSERT INTO
Clients
VALUES
(NULL,
:FirstName,
:LastName,
:Address1,
:Address2,
:City,
:State,
:Zip,
:HomePhone,
:CellPhone,
:WorkPhone,
:Email,
:ContactMethod,
:ContactFrequency,
:ContactTime,
:LastContact,
:TaxExempt,
:TaxID,
:Notes)
"""
c.execute(query, r)