%%sh
ls
authors_books.sql cars.sql demo.db zetcode-part1.ipynb zetcode-part2.ipynb
Below create engine, and send SQL statement to the database (here, an in-memory SQLite database)
from sqlalchemy import create_engine
eng = create_engine('sqlite:///:memory:')
with eng.connect() as con:
rs = con.execute('SELECT 5')
data = rs.fetchone()[0]
print "Data: %s" % data
Data: 5
eng = create_engine('postgresql:///testdb')
con = eng.connect()
rs = con.execute("SELECT VERSION()")
print rs.fetchone()
con.close()
--------------------------------------------------------------------------- OperationalError Traceback (most recent call last) <ipython-input-3-b51c211af1b6> in <module>() 1 eng = create_engine('postgresql:///testdb') ----> 2 con = eng.connect() 3 4 rs = con.execute("SELECT VERSION()") 5 print rs.fetchone() /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in connect(self, **kwargs) 2016 """ 2017 -> 2018 return self._connection_cls(self, **kwargs) 2019 2020 def contextual_connect(self, close_with_result=False, **kwargs): /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in __init__(self, engine, connection, close_with_result, _branch_from, _execution_options, _dispatch, _has_events) 70 else: 71 self.__connection = connection \ ---> 72 if connection is not None else engine.raw_connection() 73 self.__transaction = None 74 self.__savepoint_seq = 0 /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in raw_connection(self, _connection) 2102 """ 2103 return self._wrap_pool_connect( -> 2104 self.pool.unique_connection, _connection) 2105 2106 /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _wrap_pool_connect(self, fn, connection) 2076 if connection is None: 2077 Connection._handle_dbapi_exception_noconnection( -> 2078 e, dialect, self) 2079 else: 2080 util.reraise(*sys.exc_info()) /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _handle_dbapi_exception_noconnection(cls, e, dialect, engine) 1403 util.raise_from_cause( 1404 sqlalchemy_exception, -> 1405 exc_info 1406 ) 1407 else: /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/util/compat.pyc in raise_from_cause(exception, exc_info) 200 exc_type, exc_value, exc_tb = exc_info 201 cause = exc_value if exc_value is not exception else None --> 202 reraise(type(exception), exception, tb=exc_tb, cause=cause) 203 204 if py3k: /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _wrap_pool_connect(self, fn, connection) 2072 dialect = self.dialect 2073 try: -> 2074 return fn() 2075 except dialect.dbapi.Error as e: 2076 if connection is None: /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in unique_connection(self) 316 317 """ --> 318 return _ConnectionFairy._checkout(self) 319 320 def _create_connection(self): /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _checkout(cls, pool, threadconns, fairy) 711 def _checkout(cls, pool, threadconns=None, fairy=None): 712 if not fairy: --> 713 fairy = _ConnectionRecord.checkout(pool) 714 715 fairy._pool = pool /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in checkout(cls, pool) 478 @classmethod 479 def checkout(cls, pool): --> 480 rec = pool._do_get() 481 try: 482 dbapi_connection = rec.get_connection() /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _do_get(self) 1058 except: 1059 with util.safe_reraise(): -> 1060 self._dec_overflow() 1061 else: 1062 return self._do_get() /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.pyc in __exit__(self, type_, value, traceback) 58 exc_type, exc_value, exc_tb = self._exc_info 59 self._exc_info = None # remove potential circular references ---> 60 compat.reraise(exc_type, exc_value, exc_tb) 61 else: 62 if not compat.py3k and self._exc_info and self._exc_info[1]: /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _do_get(self) 1055 if self._inc_overflow(): 1056 try: -> 1057 return self._create_connection() 1058 except: 1059 with util.safe_reraise(): /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _create_connection(self) 321 """Called by subclasses to create a new ConnectionRecord.""" 322 --> 323 return _ConnectionRecord(self) 324 325 def _invalidate(self, connection, exception=None): /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in __init__(self, pool) 447 def __init__(self, pool): 448 self.__pool = pool --> 449 self.connection = self.__connect() 450 self.finalize_callback = deque() 451 /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in __connect(self) 605 try: 606 self.starttime = time.time() --> 607 connection = self.__pool._invoke_creator(self) 608 self.__pool.logger.debug("Created new connection %r", connection) 609 return connection /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/strategies.pyc in connect(connection_record) 95 if connection is not None: 96 return connection ---> 97 return dialect.connect(*cargs, **cparams) 98 99 creator = pop_kwarg('creator', connect) /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/default.pyc in connect(self, *cargs, **cparams) 383 384 def connect(self, *cargs, **cparams): --> 385 return self.dbapi.connect(*cargs, **cparams) 386 387 def create_connect_args(self, url): /home/takanori/.local/lib/python2.7/site-packages/psycopg2/__init__.pyc in connect(dsn, database, user, password, host, port, connection_factory, cursor_factory, async, **kwargs) 162 for (k, v) in items]) 163 --> 164 conn = _connect(dsn, connection_factory=connection_factory, async=async) 165 if cursor_factory is not None: 166 conn.cursor_factory = cursor_factory OperationalError: (psycopg2.OperationalError) could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Give user tak
with all privileges to this database
mysql> select host, user from mysql.user;
+------------+------------------+
| host | user |
+------------+------------------+
| 127.0.0.1 | root |
| ::1 | root |
| localhost | debian-sys-maint |
| localhost | guest |
| localhost | root |
| localhost | tak |
| sbia-pc125 | root |
+------------+------------------+
7 rows in set (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| TUTORIALS |
| mysql |
| performance_schema |
| tutorial |
| world |
+--------------------+
6 rows in set (0.00 sec)
mysql> DESCRIBE mysql.user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| Create_tablespace_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
| plugin | char(64) | YES | | | |
| authentication_string | text | YES | | NULL | |
+------------------------+-----------------------------------+------+-----+---------+-------+
42 rows in set (0.00 sec)
mysql> CREATE DATABASE sql_alchemy_demo;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| TUTORIALS |
| mysql |
| performance_schema |
| sql_alchemy_demo |
| tutorial |
| world |
+--------------------+
7 rows in set (0.00 sec)
mysql> USE sql_alchemy_demo;
Database changed
mysql> GRANT ALL ON sql_alchemy_demo.* TO 'tak'@'localhost';
Query OK, 0 rows affected (0.02 sec)
eng = create_engine('mysql:///tak:tak@localhost/sql_alchemy_demo')
con = eng.connect()
rs = con.execute("SELECT VERSION()")
print rs.fetchone()
con.close()
--------------------------------------------------------------------------- OperationalError Traceback (most recent call last) <ipython-input-10-f842361ad67d> in <module>() 1 eng = create_engine('mysql:///tak:tak@localhost/sql_alchemy_demo') ----> 2 con = eng.connect() 3 4 rs = con.execute("SELECT VERSION()") 5 print rs.fetchone() /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in connect(self, **kwargs) 2016 """ 2017 -> 2018 return self._connection_cls(self, **kwargs) 2019 2020 def contextual_connect(self, close_with_result=False, **kwargs): /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in __init__(self, engine, connection, close_with_result, _branch_from, _execution_options, _dispatch, _has_events) 70 else: 71 self.__connection = connection \ ---> 72 if connection is not None else engine.raw_connection() 73 self.__transaction = None 74 self.__savepoint_seq = 0 /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in raw_connection(self, _connection) 2102 """ 2103 return self._wrap_pool_connect( -> 2104 self.pool.unique_connection, _connection) 2105 2106 /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _wrap_pool_connect(self, fn, connection) 2076 if connection is None: 2077 Connection._handle_dbapi_exception_noconnection( -> 2078 e, dialect, self) 2079 else: 2080 util.reraise(*sys.exc_info()) /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _handle_dbapi_exception_noconnection(cls, e, dialect, engine) 1403 util.raise_from_cause( 1404 sqlalchemy_exception, -> 1405 exc_info 1406 ) 1407 else: /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/util/compat.pyc in raise_from_cause(exception, exc_info) 200 exc_type, exc_value, exc_tb = exc_info 201 cause = exc_value if exc_value is not exception else None --> 202 reraise(type(exception), exception, tb=exc_tb, cause=cause) 203 204 if py3k: /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _wrap_pool_connect(self, fn, connection) 2072 dialect = self.dialect 2073 try: -> 2074 return fn() 2075 except dialect.dbapi.Error as e: 2076 if connection is None: /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in unique_connection(self) 316 317 """ --> 318 return _ConnectionFairy._checkout(self) 319 320 def _create_connection(self): /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _checkout(cls, pool, threadconns, fairy) 711 def _checkout(cls, pool, threadconns=None, fairy=None): 712 if not fairy: --> 713 fairy = _ConnectionRecord.checkout(pool) 714 715 fairy._pool = pool /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in checkout(cls, pool) 478 @classmethod 479 def checkout(cls, pool): --> 480 rec = pool._do_get() 481 try: 482 dbapi_connection = rec.get_connection() /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _do_get(self) 1058 except: 1059 with util.safe_reraise(): -> 1060 self._dec_overflow() 1061 else: 1062 return self._do_get() /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.pyc in __exit__(self, type_, value, traceback) 58 exc_type, exc_value, exc_tb = self._exc_info 59 self._exc_info = None # remove potential circular references ---> 60 compat.reraise(exc_type, exc_value, exc_tb) 61 else: 62 if not compat.py3k and self._exc_info and self._exc_info[1]: /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _do_get(self) 1055 if self._inc_overflow(): 1056 try: -> 1057 return self._create_connection() 1058 except: 1059 with util.safe_reraise(): /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _create_connection(self) 321 """Called by subclasses to create a new ConnectionRecord.""" 322 --> 323 return _ConnectionRecord(self) 324 325 def _invalidate(self, connection, exception=None): /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in __init__(self, pool) 447 def __init__(self, pool): 448 self.__pool = pool --> 449 self.connection = self.__connect() 450 self.finalize_callback = deque() 451 /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in __connect(self) 605 try: 606 self.starttime = time.time() --> 607 connection = self.__pool._invoke_creator(self) 608 self.__pool.logger.debug("Created new connection %r", connection) 609 return connection /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/strategies.pyc in connect(connection_record) 95 if connection is not None: 96 return connection ---> 97 return dialect.connect(*cargs, **cparams) 98 99 creator = pop_kwarg('creator', connect) /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/default.pyc in connect(self, *cargs, **cparams) 383 384 def connect(self, *cargs, **cparams): --> 385 return self.dbapi.connect(*cargs, **cparams) 386 387 def create_connect_args(self, url): /home/takanori/.local/lib/python2.7/site-packages/MySQLdb/__init__.pyc in Connect(*args, **kwargs) 79 """Factory function for connections.Connection.""" 80 from MySQLdb.connections import Connection ---> 81 return Connection(*args, **kwargs) 82 83 connect = Connection = Connect /home/takanori/.local/lib/python2.7/site-packages/MySQLdb/connections.pyc in __init__(self, *args, **kwargs) 191 autocommit = kwargs2.pop('autocommit', False) 192 --> 193 super(Connection, self).__init__(*args, **kwargs2) 194 self.cursorclass = cursorclass 195 self.encoders = dict([ (k, v) for k, v in conv.items() OperationalError: (_mysql_exceptions.OperationalError) (1045, "Access denied for user 'takanori'@'localhost' (using password: NO)")
from sqlalchemy import create_engine
from sqlalchemy.sql import text
eng = create_engine("mysql://testuser:test623@localhost/testdb")
with eng.connect() as con:
con.execute(text('DROP TABLE IF EXISTS Cars'))
con.execute(text('''CREATE TABLE Cars(Id INTEGER PRIMARY KEY,
Name TEXT, Price INTEGER)'''))
data = ( { "Id": 1, "Name": "Audi", "Price": 52642 },
{ "Id": 2, "Name": "Mercedes", "Price": 57127 },
{ "Id": 3, "Name": "Skoda", "Price": 9000 },
{ "Id": 4, "Name": "Volvo", "Price": 29000 },
{ "Id": 5, "Name": "Bentley", "Price": 350000 },
{ "Id": 6, "Name": "Citroen", "Price": 21000 },
{ "Id": 7, "Name": "Hummer", "Price": 41400 },
{ "Id": 8, "Name": "Volkswagen", "Price": 21600 }
)
for line in data:
con.execute(text("""INSERT INTO Cars(Id, Name, Price)
VALUES(:Id, :Name, :Price)"""), **line)
--------------------------------------------------------------------------- OperationalError Traceback (most recent call last) <ipython-input-9-59450db5f16a> in <module>() 4 eng = create_engine("mysql://testuser:test623@localhost/testdb") 5 ----> 6 with eng.connect() as con: 7 8 con.execute(text('DROP TABLE IF EXISTS Cars')) /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in connect(self, **kwargs) 2016 """ 2017 -> 2018 return self._connection_cls(self, **kwargs) 2019 2020 def contextual_connect(self, close_with_result=False, **kwargs): /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in __init__(self, engine, connection, close_with_result, _branch_from, _execution_options, _dispatch, _has_events) 70 else: 71 self.__connection = connection \ ---> 72 if connection is not None else engine.raw_connection() 73 self.__transaction = None 74 self.__savepoint_seq = 0 /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in raw_connection(self, _connection) 2102 """ 2103 return self._wrap_pool_connect( -> 2104 self.pool.unique_connection, _connection) 2105 2106 /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _wrap_pool_connect(self, fn, connection) 2076 if connection is None: 2077 Connection._handle_dbapi_exception_noconnection( -> 2078 e, dialect, self) 2079 else: 2080 util.reraise(*sys.exc_info()) /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _handle_dbapi_exception_noconnection(cls, e, dialect, engine) 1403 util.raise_from_cause( 1404 sqlalchemy_exception, -> 1405 exc_info 1406 ) 1407 else: /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/util/compat.pyc in raise_from_cause(exception, exc_info) 200 exc_type, exc_value, exc_tb = exc_info 201 cause = exc_value if exc_value is not exception else None --> 202 reraise(type(exception), exception, tb=exc_tb, cause=cause) 203 204 if py3k: /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _wrap_pool_connect(self, fn, connection) 2072 dialect = self.dialect 2073 try: -> 2074 return fn() 2075 except dialect.dbapi.Error as e: 2076 if connection is None: /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in unique_connection(self) 316 317 """ --> 318 return _ConnectionFairy._checkout(self) 319 320 def _create_connection(self): /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _checkout(cls, pool, threadconns, fairy) 711 def _checkout(cls, pool, threadconns=None, fairy=None): 712 if not fairy: --> 713 fairy = _ConnectionRecord.checkout(pool) 714 715 fairy._pool = pool /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in checkout(cls, pool) 478 @classmethod 479 def checkout(cls, pool): --> 480 rec = pool._do_get() 481 try: 482 dbapi_connection = rec.get_connection() /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _do_get(self) 1058 except: 1059 with util.safe_reraise(): -> 1060 self._dec_overflow() 1061 else: 1062 return self._do_get() /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.pyc in __exit__(self, type_, value, traceback) 58 exc_type, exc_value, exc_tb = self._exc_info 59 self._exc_info = None # remove potential circular references ---> 60 compat.reraise(exc_type, exc_value, exc_tb) 61 else: 62 if not compat.py3k and self._exc_info and self._exc_info[1]: /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _do_get(self) 1055 if self._inc_overflow(): 1056 try: -> 1057 return self._create_connection() 1058 except: 1059 with util.safe_reraise(): /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in _create_connection(self) 321 """Called by subclasses to create a new ConnectionRecord.""" 322 --> 323 return _ConnectionRecord(self) 324 325 def _invalidate(self, connection, exception=None): /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in __init__(self, pool) 447 def __init__(self, pool): 448 self.__pool = pool --> 449 self.connection = self.__connect() 450 self.finalize_callback = deque() 451 /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.pyc in __connect(self) 605 try: 606 self.starttime = time.time() --> 607 connection = self.__pool._invoke_creator(self) 608 self.__pool.logger.debug("Created new connection %r", connection) 609 return connection /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/strategies.pyc in connect(connection_record) 95 if connection is not None: 96 return connection ---> 97 return dialect.connect(*cargs, **cparams) 98 99 creator = pop_kwarg('creator', connect) /home/takanori/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/default.pyc in connect(self, *cargs, **cparams) 383 384 def connect(self, *cargs, **cparams): --> 385 return self.dbapi.connect(*cargs, **cparams) 386 387 def create_connect_args(self, url): /home/takanori/.local/lib/python2.7/site-packages/MySQLdb/__init__.pyc in Connect(*args, **kwargs) 79 """Factory function for connections.Connection.""" 80 from MySQLdb.connections import Connection ---> 81 return Connection(*args, **kwargs) 82 83 connect = Connection = Connect /home/takanori/.local/lib/python2.7/site-packages/MySQLdb/connections.pyc in __init__(self, *args, **kwargs) 191 autocommit = kwargs2.pop('autocommit', False) 192 --> 193 super(Connection, self).__init__(*args, **kwargs2) 194 self.cursorclass = cursorclass 195 self.encoders = dict([ (k, v) for k, v in conv.items() OperationalError: (_mysql_exceptions.OperationalError) (1045, "Access denied for user 'testuser'@'localhost' (using password: YES)")
from sqlalchemy import create_engine
from sqlalchemy.sql import text
eng = create_engine('sqlite:///:memory:')
with eng.connect() as con:
con.execute(text('''CREATE TABLE Cars(Id INTEGER PRIMARY KEY,
Name TEXT, Price INTEGER)'''))
rs = con.execute(text('SELECT * FROM Cars'))
print rs.keys()
[u'Id', u'Name', u'Price']
from sqlalchemy import (create_engine, Table, Column, Integer,
String, MetaData)
meta = MetaData()
cars = Table('Cars', meta,
Column('Id', Integer, primary_key=True),
Column('Name', String),
Column('Price', Integer)
)
print "The Name column:"
print cars.columns.Name
print cars.c.Name
print "Columns: "
for col in cars.c:
print col
print "Primary keys:"
for pk in cars.primary_key:
print pk
print "The Id column:"
print cars.c.Id.name
print cars.c.Id.type
print cars.c.Id.nullable
print cars.c.Id.primary_key
The Name column: Cars.Name Cars.Name Columns: Cars.Id Cars.Name Cars.Price Primary keys: Cars.Id The Id column: Id INTEGER False True