Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

disabled logging, removed temporary prints, removed support for multiple statements #26

Merged
merged 6 commits into from
Jul 6, 2017
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
@@ -10,11 +10,11 @@
"Topic :: Software Development :: Libraries :: Python Modules"
],
description="CS50 library for Python",
install_requires=["SQLAlchemy"],
install_requires=["SQLAlchemy", "sqlparse"],
keywords="cs50",
name="cs50",
package_dir={"": "src"},
packages=["cs50"],
url="https://github.com/cs50/python-cs50",
version="2.0.0"
version="2.1.0"
)
5 changes: 5 additions & 0 deletions src/cs50/sql.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
import logging
import re
import sqlalchemy
import sqlparse
import sys
import warnings

@@ -86,6 +87,10 @@ def process(value):
else:
return process(value)

# allow only one statement at a time
if len(sqlparse.split(text)) > 1:
raise RuntimeError("too many statements at once")

# raise exceptions for warnings
warnings.filterwarnings("error")

7 changes: 3 additions & 4 deletions tests/sqltests.py
Original file line number Diff line number Diff line change
@@ -6,8 +6,9 @@
from cs50.sql import SQL

class SQLTests(unittest.TestCase):
def multi_inserts_enabled(self):
return True

def test_multiple_statements(self):
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO cs50(val) VALUES('baz'); INSERT INTO cs50(val) VALUES('qux')")

def test_delete_returns_affected_rows(self):
rows = [
@@ -24,8 +25,6 @@ def test_delete_returns_affected_rows(self):
def test_insert_returns_last_row_id(self):
self.assertEqual(self.db.execute("INSERT INTO cs50(val) VALUES('foo')"), 1)
self.assertEqual(self.db.execute("INSERT INTO cs50(val) VALUES('bar')"), 2)
if self.multi_inserts_enabled():
self.assertEqual(self.db.execute("INSERT INTO cs50(val) VALUES('baz'); INSERT INTO cs50(val) VALUES('qux')"), 4)

def test_select_all(self):
self.assertEqual(self.db.execute("SELECT * FROM cs50"), [])